Closed kiritokun07 closed 2 years ago
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
配置了两个库,DB1 DB2,默认是DB1 XXMapper已加注解@DS("DB2") 在一个自建的serviceImpl里调用某DB2的iXXService.listByIds()和iXXService.updatebatchById()
@DS("DB2")
iXXService.listByIds()
iXXService.updatebatchById()
Expected Result: 两个SQL都走DB2
Actual Result: 发现上述两个SQL第一个走了DB2,第二个走DB1,因为没有相应的表报错 如果给IXXService加上注解@DS("DB2"),那么执行正常都走DB2
分析 看了下源码发现listByIds用了this.getBaseMapper(),但updateBatchById是直接execute,所以怀疑跳过了mapper的注解,直接用了默认的库配置
listByIds
this.getBaseMapper()
updateBatchById
execute
你答对了,不走AOP。
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的注解,直接用了默认的库配置