解决Springboot整合mybatis,xml资源⽂件放置及路径配置问题
⽹上各种解决⽅案,我试了好久,整合了⼏篇⽂章才凑出来,在这⾥分享⼀下,实在不想⽹友们在这⾥⾯绕圈⼦,毕竟,写代码的时间是愉快的,解决bug也是愉快的,但也是⼀直在bug⾥⾯绕圈⼦就不爽了。
亲⾃试验:
1) 我的mapper和xml是这样⼦放置的
2) 在.xml中namespace是这样的:
3) application.properties中mybatis.mapper-locations得这么配置到xml
4) 最后呢,你只要在l中build下这样配置
5) 按照我这种位置防⽌,把响应的包名换成⾃⼰的,就基本上不会没有什么问题的。
也不⽤去加什么*Application中去加什么注解@MapperScan(value = "com.acme.shop.mapper")什么的了,不需要呢。
补充知识:mybatis-plus的 l 路径配置的坑
问题:
在SpringBoot整合MyBatis时,若mapper映射⽂件在java路径下,就会⼀直报错Invalid bound statement (not found): Mapper.selectxx
说明Mapper接⼝是可以调⽤到的,问题就出在⽆法映射到l⽂件。
同时查看输出target⽬录下,没有l⽂件的编译结果。
原因:
SpringBoot默认配置情况下,只有resources路径下的xml⽂件会被扫描。
解决办法:
⽅法⼀:【推荐使⽤】
将mapper映射⽂件放在resources⽬录下,通常会在resources⽬录下建⼀个mapper⽬录,存放各种mapper的映射⽂件,
并且在application.properties中配置 Mapper映射⽂件的路径为:
#指定myBatis的核⼼配置⽂件与Mapper映射⽂件
mybatis.mapper-locations=classpath:mapper/*.xml
测试成功,查看target⽬录下,有l⽂件的编译结果。
⽅法⼆:
mapper映射⽂件依旧放在java⽬录下,
此时,需要在l⽂件中添加java路径下xml⽂件扫描配置,
<build>
<resources>
<resource>
<filtering>true</filtering>
<directory>${basedir}/src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>${basedir}/src/main/java</directory>
<excludes>
<exclude>**/*.xml</exclude>
</excludes>
</resource>
</resources>
</build>
并且在application.properties中配置 Mapper映射⽂件的路径时要加上包名,
#mybatis.mapper-locations=classpath:包名/*.xml
spring怎么读取xml文件
mybatis.mapper-locations=classpath:org.xiao.dao/*.xml
测试成功,查看target⽬录下,有l⽂件的编译结果。
以上这篇解决Spring boot整合mybatis,xml资源⽂件放置及路径配置问题就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。