风火家人开发记要

技术总结精华贴

Tag: MySql

Java, 原创,

调用MyBatis Mapper报BindingException Invalid bound statement 问题排查

这个问题搜索到的很多,但是都不解决不了我的问题,首先整理下网上的解决方案。 1. 首先验证 target 目录下是否有对应 Mapper.xml, 如果没有可以参考下面3部。 1-1. 本地环境问题 比如我的配置如下,含多个路径,这当然不是我的解决方案。 1-2. xxxMapper.xml 与 xxxMapper.java 文件名不同,这也不是我的原因。 1-3. 还有部分是 Mapper.xml 和 Mapper.java 放在了同一目录。 这需要额外配置 pom.xml解决。 2. target/classess/mybatis 目录下有相关 xxxMapper.xml 先说下我使用的是 tk.mybatis, 继承了 SelectMapper等 问题排查: 通过单元测试 发现 1)能正常调用的 SelectMapper下的 select(T var1) SelectByConditionMapper 下的 List selectByCondition(Object var1) SelectCountByConditionMapper下的int selectCountByCondition(Object var1) 2)不能正常调用的,会报 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)的函数。 继承自接口 BaseQueryMapper 下定义的函数,和 BaseQueryMapper 下面的函数。 继续排查注解: 给 query(), page(),count()函数添加注解,发现不在报以上错误(BindingException: Invalid bound statement (not found))。 经上面分析,我们发现我们定义的 xxxMapper.xml 实际上并没有起到作用,使用注解的会起作用。 那现在的问题就变成了 为什么 xxxMapper.xml 没有起作用的问题。 (124)

查看全文