解决spring boot中多数据源invalid bound statement (not found)报错问题

1.错误重现

在这里插入图片描述
2.解决思路:
01.平常我们系统中报这个错一般都是xml路径没有扫描到,在yml或者properties里面没有配置xml的扫描路径 ,我们配置上即可在这里插入图片描述
02:或者我们dao层接口,没有加mapper注解,致使无法扫描到resource下面的xm文件
我这里加了注解的
在这里插入图片描述
03:检查dao里面的接口中的方法名和 mapper.xml 中的statement 的 id 是否保持一致。不一致的话,也会报同样的错

如果检查了以上三项确认无误的话,在使用单数据源应该是没问题的了。但是 此时,坑来了,在我们使用多数据的时候,因为关闭了springboot的默认数据源配置,使用我们自己定义的数据源,此时我们在配置文件中配置的路径是不会生效的,需要我们在定义数据源代码的时候,手动指向一下mapper.xml的位置。如下图所示
在这里插入图片描述
切记:我们使用多数据源的时候,spring boot的一些自动配置会失效,我们需自己手动指定配置项(包括事物也是)。都需要指定。

Spring Boot出现"Invalid bound statement (not found)"异常通常是当你尝试执行一个预编译的SQL(PreparedStatement)查询时,数据库找不到对应的SQL语句绑定。这可能有以下几个原因: 1. **拼写错误或命名不匹配**:确保你在代码引用的表名、字段名或别名与数据库的实际名称一致。 2. **未注册Repository接口**:如果你使用Spring Data JPA,确保你已经正确地定义了一个Repository接口,并且它正确地映射到你的数据访问层。 3. **@Repository方法定义错误**:在Repository接口的方法上,确保`@Query`注解的SQL语句是正确的,包括其前缀(如`SELECT`, `FROM`, `WHERE`等)和占位符的使用。 4. **数据源配置错误**:检查你的application.properties或application.yml文件数据源配置,包括数据库URL、用户名和密码是否正确。 5. **懒加载和延迟初始化**:如果在没有完全初始化数据源的情况下就执行了查询,可能会导致找不到预编译语句。确保在使用Repository之前,数据源已经正确初始化。 6. **Spring Boot版本兼容性问题**:有时候,可能是因为使用的Spring Boot或相关依赖库版本不兼容。 为了解决这个问题,你可以采取以下步骤进行排查: 1. 查看异常堆栈信息,定位具体的代码位置。 2. 使用`debug`模式运行应用,检查查询是否能正确编译。 3. 检查日志输出,获取更详细的错误信息。
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值