详见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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步