一、说明
造成MyBatis报Invalid bound statement (not found)错误有很多种,主要原因就是xxxMapper.java与xxxMapper.xml没有正确绑定。没有正确绑定的原因有很多种,所以导致有些人在网上百度查询到别人的博客上写的解决方法之后却无法解决自己的问题,在此作一些方法总结。
二、错误产生原因及解决方法
2.1 映射xxxMapper.xml文件未被扫描
如果你使用的是Maven构建的项目,那么因为maven默认只是加载src/main/resources目录下的配置文件,并不会主动加载src/main/java下的配置文件。如果你的Mybatis映射xml文件是与接口文件放在同一目录下的话,就必须在pom.xml文件中加以上以下配置:
<!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 -->
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
2.2 接口名称与xml映射文件名称不一致
请检查你的的xxxMapper.java文件与xxxMapper.xml文件名称是否一致;
2.3xml映射文件中的namespace配置错误
namespace必须等于接口的完整类名
2.4 xml映射文件中的select/delete/update/insert等标签的id值与接口中的方法名称不一致
2.5xml映射文件中的select/delete/update/insert等标签的parameterType的值与接口中的方法的参数的类型不一致
2.6 xml映射文件中的select/delete/update/insert等标签的resultMap的type或resultType与接口中的方法的返回参数的类型不一致
2.7xml映射文件中的select/delete/update/insert等标签中的databaseId的值在spring配置文件中未找到
以上整理的错误产生的原因并不全,以后再发生此问题如果不是以上收集的几点时我会再作补充。