如果出现:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
一般的原因是Mapper interface和xml文件的定义对应不上,需要检查包名,namespace,函数名称等能否对应上,需要比较细致的对比
按以下步骤一一执行:
1:检查xml文件所在的package名称是否和interface对应的package名称一一对应
2:检查xml文件的namespace是否和xml文件的package名称一一对应
3:检查函数名称能否对应上
除此之外,我遇到的还有一些特殊情况,耽误了我不少时间:
1:Intellij Idea 的包名和目录名生成机制,新建一个包a.b.c.d,目录结构不是a->b->c->d,而是生成"a.b.c.d"的目录,进而导致mybatis映射错误,此错误很难排查;
2: xml文件定义如下: <select id="countMembers" parameterMap="java.util.Map" resultType="java.lang.Integer">
parameterMap用错,应该为parameterType,此错误会导致mybatis所有的mapper都报绑定错误,很坑
mybatis的异常机制做的太差了,给排错造成很大困难,仅此记录。