解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题,即在mybatis中dao接口与mapper配置文件在做映射绑定的时候出现问题。简单来说,就是接口与xml要么是找不到,要么是找到了却匹配不上。
调试项目的时候这个也解决了很长时间,现把这类问题搜索到的一些解决办法进行总结,如下。
可能导致的原因及解决的参考
- xml中的namespace与接口的全名是否一致。(接口名与文件名不需要一模一样,只要xml的namespce与接口全名对应就可以)
- 若Dao层中的接口有方法在相对应的xml文件中没有实现,在执行Dao的方法时会报错,在检查的时候要仔细些。
- 在Dao层中的方法在对应xml文件中的方法名是否对应,即xml标签中的id是否与Dao层中所实现的方法名对应。
- xml文件中的方法的返回值(resultType)和参数名称(parameterType)是否与Dao层中方法对应。
- 查看关于mybits的xml配置的路径是否正确。
- **若以上都没有问题!**可在pom.xml中加入以下配置:(
有同样效果办法是在将xml文件放在resource目录下,配置对应目录结构,IDEA默认是不会读取在src/main/java目录下的xml文件的!)
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
- 还可以检查相对应的xml文件中是否有空行,删除空行,再保存,可解决问题!
- 如果你的pom里面包含mybatis-plus,记得要配置mybatis-plus.mapper-locations,只有mybatis.mapper-locations不起作用。
- 还有可能是maven仓库的jar包冲突问题。
参考文章:解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题
以上就是总结的一些办法,若是有错误的地方或者是不全面的地方欢迎留言。