项目场景:
今天同事遇到这个问题心态炸了,因为项目之前从 TkMybatis 转为 MyBatis-Plus 是我负责的,所以他跑来问我问题描述:
调用在 XML 中里面自定义 SQL 报错 Invalid bound statement (not found),而调用 BaseMapper 里的方法是正常的。原因分析:
因为全局的配置是我做的,并且调用BaseMapper中的insert、selectList等方法都没有问题,那问题肯定是xml文件路径出现了问题,但是反复检查并没有发现目录结构有任何的问题。
但是为什么会报 Invalid bound statement (not found) 错误呢?于是我就看了看target里的编译结果,不看不知道,一看吓一跳。
细心的朋友已经看出来了,因为resource目录下没有包的概念,在创建目录的时候他直接用mapper.workbench,创建的目录名就是这个,而不是mapper/workbench,当然将原来的 Compact Middle Packages 的对号去掉也一目了然了。
解决方案:
那当然是修改resource下的目录结构,在用resource下创建目录时,使用 / 进行创建。
总结:
还是要注意开发规范、要细心才行啊
官方文档也总结了关于 Invalid bound statement (not found) 异常的原因,如果不是上面的问题,官方都给出了相应的解决方案,链接: 官方文档.