问题 :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注解
("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就有可能是这个问题
在整合时出了问题去网上查,结果发现都是复制粘贴的,毫无质量,只能自己一步一步摸索了,搞定之后就整理了自己遇到的坑,希望能帮助你
更多坑欢迎访问我的
本文详细介绍了在SpringBoot整合MyBatis时遇到的Mapper文件映射问题及其解决方案。重点包括:1) 指定Mapper.xml路径避免映射错误;2) 使用@MapperScan注解扫描Mapper接口;3) 在application.properties配置文件中正确设置Mapper.xml和实体类扫描路径。此外,还提到了一些常见的坑,如Mapper.xml文件被过滤及逆向工程后包名错误等。
4407

被折叠的 条评论
为什么被折叠?



