Invalid bound statement (not found)-mybatis在idea下的bug

如题,在使用通用mapper时,遇到一个问题,使用通用mapper提供的方法,如selectByExample等可以正常使用,如果自定义mapper时,怎么都映射不到,报错Invalid bound statement (not found)。

仔细核对了namespace、接口定义、方法名称、参数等等,都没有找到问题,debug也无果。仔细看了下编译后的target目录下mapper.xml文件都不在。然后去GitHub上找原因。https://github.com/abel533/MyBatis-Spring-Boot/issues/10

最后在一篇文章中找到了原因:https://blog.csdn.net/shuaiteng_wang?t=1

现将原因和解决方式记录下来。

原因:

1.项目中将mapper.xml也放在了java目录下,和.java源代码放在一起了。

2.idea默认在编译时,不会将源代码下的xml文件也放入到编译后的文件夹下,原因是idea认为这些文件应该放在resource目录下。如果使用的是Eclipse,Eclipse的src目录下的xml等资源文件在编译的时候会自动打包进输出到classes文件夹。Hibernate和Spring有时会将配置文件放置在src目录下,编译后要一块打包进classes文件夹,所以存在着需要将xml等资源文件放置在源代码目录下的需求。

解决方式:

1.mapper.xml文件不放在java目录下,不和.java源代码放在一起,放在resource目录下

2.pom.xml中加入下列配置:

 <resources>
 3             <resource>
 4                 <directory>src/main/resources</directory>
 5                 <includes>
 6                     <include>**/*.properties</include>
 7                     <include>**/*.xml</include>
 8                 </includes>
 9                 <filtering>true</filtering>
10             </resource>
11             <resource>
12                 <directory>src/main/java</directory>
13                 <includes>
14                     <include>**/*.properties</include>
15                     <include>**/*.xml</include>
16                 </includes>
17                 <filtering>true</filtering>
18             </resource>
19         </resources>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值