一个项目中会用到多数据源,此时可以使用苞米豆的dynamic-datasource-spring-boot-starter
首先,引入jar包:

<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
	<version>2.5.4</version>
</dependency>

然后,在Springbootapplication.yml中进行配置:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test2?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: root
    dynamic:
      primary: master
      datasource:
        master:
          url: jdbc:mysql://localhost:3306/test2?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8
          driver-class-name: com.mysql.cj.jdbc.Driver
          username: root
          password: root
        sub:
          url: jdbc:mysql://localhost:3306/test2?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8
          driver-class-name: com.mysql.cj.jdbc.Driver
          username: root1
          password: root1

其中配置了两个数据源,master与sub,其中选择master作为默认数据源(对应primary配置);
若想使用sub作为部分代码的数据源,可在ServiceImpl做如下配置:

@DS("sub")
int selectBusiness(@Param("startTime") String startTime,
                   @Param("endTime") String endTime,
                   @Param("businessType") String businessType);

在使用@DS注解时,有如下注意事项:

1.不能使用事务,否则数据源不会切换,使用的还是第一次加载的数据源;
2.第一次加载数据源之后,第二次、第三次…操作其它数据源,如果数据源不存在,使用的还是第一次加载的数据源;
3.数据源名称不要包含下划线,否则不能切换。

在若依框架下,还需要将 数据配置类 取消@config配置

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐