BindingException:Invalid bound statement (not found)如何解决

本文讲述了在SpringBoot项目中,由于多个数据源的mapper接口文件放在同一package导致的随机报错问题,通过调整文件结构并配置MapperScannerConfigurer来解决冲突,确保每个数据源的DAO正确识别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

百度该问题,得到的答案不外如下几种:

出现这个错误时,按以下步骤检查一般就会解决问题:
1:检查xml文件所在package名称是否和Mapper interface所在的包名一一对应;
2:检查xml的namespace是否和xml文件的package名称一一对应;
3:检查方法名称是否对应;
4:去除xml文件中的中文注释;
5:随意在xml文件中加一个空格或者空行然后保存。

然而有的时候,却不一定是上述问题导致的。

问题到底在哪呢?

原来是因为不同数据源关联的两个DAO,我都放在同一个package下了,导致数据源扫描时,有时候无法识别正确的DAO

解决方式就是分别两个DAO再添加一个package,数据源配置中MapperScannerConfigurer扫描相应的package,这样就不会有问题了
在这里插入图片描述在这里插入图片描述
上面是我搜索这个问题的时候,查询到的答案,原文链接:
https://blog.csdn.net/z3278221/article/details/80614853


虽然上述答案没有100%回答了我的问题,但是借鉴了他的解决思路,我把我的问题也解决了。如下

我遇到这个问题时,在我的SringBoot项目中,我报错的原因是因为:我的不同的datasource的mapper接口文件,都放在同一个package下了,如下所示:
在这里插入图片描述
可以看到,在我的这个mapper文件夹下,同时放了两个datasource的mapper接口文件(分别是sjzt和shujia这两个datasource)

最终导致报错
在这里插入图片描述而且,我的这报错是具有随机性的!!这次启动项目报错sjzt这datasource下的方法没有声明,下次启动时可能又报shujia这个datasource下的方法没有绑定声明了(Invalid bound statement)!!!

参考了上面的改错思路,我做了如下修改,即把不同的数据源的mapper文件,放到了不同的文件夹中去,如下图所示:
在这里插入图片描述之后,再在各自datasource的配置文件中,指定扫描各自的mapper目录即可,如下是shujia这个datasource的配置文件所做的修改
在这里插入图片描述之后就可以了。

如果你也遇到了跟我一样的问题,并且出错情形跟我一样,那不妨也按照该思路排错试试。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值