模块化开发SpringBoot整合MyBatis时Mapper.xml映射问题

本文详细介绍了在SpringBoot整合MyBatis时遇到的Mapper文件映射问题及其解决方案。重点包括:1) 指定Mapper.xml路径避免映射错误;2) 使用@MapperScan注解扫描Mapper接口;3) 在application.properties配置文件中正确设置Mapper.xml和实体类扫描路径。此外,还提到了一些常见的坑,如Mapper.xml文件被过滤及逆向工程后包名错误等。
一、Mapper文件映射问题

问题 :SpringBoot整合Mybatis时,一直无法映射Mapper接口与Mapper.xml文件

一直报错 Invalid bound statement not found xxxx.xxMapper.selectByxxx()

说明Mapper接口是可以调用到的,问题就出在无法映射到Mapper.xml文件

排查后发现还是路径的问题,

在application.properties中配置 Mapper路径要加上模块名

  
  #mybatis.mapper-locations=模块名称/classpath:包名/*.xml
  mybatis.mapper-locations=wstore-common-mapper/classpath:com.wang.mapper/*.xml
  #mybatis.type-aliases-package=包名
  mybatis.type-aliases-package=com.wang.pojo

然后测试通过

  
  2018-07-12 15:34:49.238  INFO 38632 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
  User{userId=1, userName='zhangsan', userEmail='zhangsan@wstore,com', userPhone='1333333333', userStatus=1, userIp='59.109.154.84', userCreated=Thu Jul 05 00:07:51 CST 2018, userUpdatad=Thu Jul 05 00:07:56 CST 2018}

二、SpringBoot整合MyBatis要注意的地方
1、在启动程序一定要要加上@MapperScan注解
  @SpringBootApplication
  @MapperScan("com.xxx.mapper")
  public class WstoreServiceSsoApplication {
  ​
      public static void main(String[] args) {
          SpringApplication.run(WstoreServiceSsoApplication.class, args);
      }
  }

这个注解是扫描Mapper接口的,不是xml文件

2、在application.properties中配置Mapper.xml文件扫描,以及实体类包名
  mybatis.mapper-locations=common-mapper/classpath:com.xxx.mapper/*.xml
  mybatis.type-aliases-package=com.xxx.pojo

注意:mapper要注明是哪个模块下的哪个包

三、其他的坑

1、有时候配置好了还是映射不到mapper.xml文件,要收配置都没做错的话可能就是xml文件被过滤掉了,可以在项目中查看target文件夹,看其对应目录是否有xxxMapper.xml文件,如若没有,在该模块pom中配置如下

  
      <build>
          <resources>
              <resource>
                  <directory>${basedir}/src/main/java</directory>
                  <includes>
                      <include>**/*.xml</include>
                  </includes>
              </resource>
          </resources>
      </build>

2、xxxMapper.xml生成问题,如果MyBatis逆向工程生成Mapper.xml文件后,不是一次生成到指定目录,而后来移动了,也可能出现问题,主要检查mapper.xml文件中封装的返回类包名是否正确,测试时,不报错却查不到数据,返回null就有可能是这个问题

在整合时出了问题去网上查,结果发现都是复制粘贴的,毫无质量,只能自己一步一步摸索了,搞定之后就整理了自己遇到的坑,希望能帮助你

更多坑欢迎访问我的 github主页

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值