baomidou / dynamic-datasource

dynamic datasource for springboot 多数据源 动态数据源 主从分离 读写分离 分布式事务
https://www.kancloud.cn/tracy5546/dynamic-datasource/2264611
Apache License 2.0
4.75k stars 1.19k forks source link

查询走注解DS,update不走注解所在的库 #441

Closed kiritokun07 closed 2 years ago

kiritokun07 commented 2 years ago

Enviroment

JDK Version(required): 1.8 SpringBoot Version(required): 2.4.2 dynamic-datasource-spring-boot-starter Version(required): 3.5.1 druid Version(optional): 1.2.11 mybatis-plus-boot-starter 3.5.1 3.5.2

Describe what happened

配置了两个库,DB1 DB2,默认是DB1 XXMapper已加注解@DS("DB2") 在一个自建的serviceImpl里调用某DB2的iXXService.listByIds()iXXService.updatebatchById()

Expected Result: 两个SQL都走DB2

Actual Result: 发现上述两个SQL第一个走了DB2,第二个走DB1,因为没有相应的表报错 如果给IXXService加上注解@DS("DB2"),那么执行正常都走DB2

分析 看了下源码发现listByIds用了this.getBaseMapper(),但updateBatchById是直接execute,所以怀疑跳过了mapper的注解,直接用了默认的库配置

huayanYu commented 2 years ago

你答对了,不走AOP。