Mybatis报错Invalid bound statement (not found)
致访客
感谢各位一年多的陪伴,因内容调整,本站将于近日迁移到新域名并不再更新主要内容。
特此通知。
感谢各位一年多的陪伴,因内容调整,本站将于近日迁移到新域名并不再更新主要内容。
特此通知。
摘要
Invalid bound statement (not found)是一个很玄学的一个错误,出现问题的原因有很多种可能
具体报错信息:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.wanvale.mapper.EmployeeMapper.addEmp
问题分析
其实就是Mapper.xml出问题了,具体问题可以按照以下方法排查!
namespace不对
检查你的XxxMapper.xml中
<mapper namespace="com.xxx.xxx.XxxxMapper">
是否和你的Mapper全限定类名一致
方法名和id不一致
检查xml文件中的
<select|update|delete|insert id="xxxXxxxx">
和你的XxxxMapper.java中的方法名是否对应
解决方法
如果上面两种并没有解决你的问题,那你可能跟我一样
看一下我的目录结构
1.jpg
可以看得出来,EmployeeMapper.xml并没有被打包,mapper包下只有一个EmployeeMapper.class
所以提供一个解决办法:在maven中<build>标签中加入打包xml的标签
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
当然,图方便,我直接在resources下新建一个同名的mapper包了
注意:这里一定不要用"."而是用"" 否则建立的目录是一层而不是三层
之后再次运行JUnit,问题解决