一、问题背景
公司一个老哥新建项目,在引入mybatis-plus后,跑测试的时候报:Invalid bound statement (not found)异常。找到我一起排查问题。
二、排查过程
由于导致这个报错的原因有很多,依次排查了dao与mapper的namespace对应、xml是否被编译、SQL的传参、application启动类中扫包注解、yml配置文件中mapper路径配置。经过一轮排查和测试,发现问题依然没有被解决。后来在看项目结构的时候突然发现这老哥用代码生成器在mapper包下多生成了一层,再去看配置文件中xml文件的路径(如下图),终于找到了报错的原因。
三、解决报错
将mybatis-plus中mapper路径配置改为下图所示后,问题解决。总结本次问题的原因:当mapper包下有多层时,必须在路径配置中用通配符,这样mybatis-plus才能找到SQL语句所在的xml文件。