baomidou / dynamic-datasource

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

@DS切换数据源失效,无论怎么切换,一直在用primary指定的数据源 #674

Closed liudaok closed 1 week ago

liudaok commented 1 week ago

JDK17 springboot3.2.9 mybatis-plus-spring-boot3-starter 3.5.7 dynamic-datasource-spring-boot3-starter

以上是我使用的版本。@DS切换数据源无效,怎么切换,都一直在使用primary指定的数据源。而且@DS实在Service中用的。 求大神帮忙解答

以下是service @Service public class UserService {

@Autowired
private User1Mapper user1Mapper;

@Autowired
private User2Mapper user2Mapper;

@DS("master")
public void contextLoads() {
    System.out.println(user1Mapper.selectById("69e23a8e0e2ef03da32d6874f10d8e51"));
}

@DS("slave")
public void contextLoads2() {
    System.out.println(user2Mapper.selectById("70cf0117df04704e51c5170929f9b31a"));
}

}

以下是yml配置 spring: application: name: demo datasource: dynamic: primary: master datasource: master: url: jdbc:mysql://localhost:3306/my_db_1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver slave: url: jdbc:mysql://localhost:3306/my_db_2?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

huayanYu commented 1 week ago

无法复现

liudaok commented 1 week ago

您好,有时间恢复您!谢谢

liudaok commented 1 week ago

解决了。

  1. 检查版本: spring-boot-starter-parent 3.2.9 dynamic-datasource-spring-boot3-starter 4.2.0 首先我这个版本配置的不对,之后我去maven仓库找到了正确的版本 4.20 mybatis-plus-spring-boot3-starter 3.5.7
  2. @DS这个注解我的使用位置错误了 我是在单元测试类中使用的,在mapper或者service中使用才行。

java小白。。。。

1scy commented 1 week ago

可以看下是不是事务造成的