详见MP的gitee源码Issue:https://gitee.com/baomidou/mybatis-plus/issues/I6AZIO
MP版本3.5.2
最近遇到了Invalid bound statement (not found)这个报错,网上都是说xml和mapper包或方法定义名称不匹配造成的,我想现在都用MP和MPJ了,一般mapper的xml文件不用写了,所以网上很多方案不对症。这个问题浪费我好几天,已经解决,记录在此,避免他人踩坑。这里要感谢@bxws兄弟,很认真很心细,给了我解决思路。
我使用的若依框架,在domian包下定义了实体类。后来为实现一些较复杂业务,继承了框架SysUser等实体,放在自己模块com.xx.domain.ruoyi包下,在Controller层使用getXXXById()方法获取单个实体,这时问题就出现了。
原因:确实是mapper和实体、xml文件路径或包名不对应造成的。
解决:
小项目没有定义xml文件,直接定义了Mapper继承MP的BaseMapper,为了写xml省事,又在application.yml中定义了:
typeAliasesPackage: com.ruoyi.**.domain,这个定义并不包含实体包domain下面的包,所以需要 增加子包 的定义:
typeAliasesPackage: com.ruoyi.**.domain, com.ruoyi.**.domain.**
这样就解决了!
另外,使用getById方法,实体定义要有主键、要有@TableId注解,才能使用MP的getById