SpringBoot整合Mybatis-Plus多数据源

MyBatis-Plus则是一个优秀的ORM框架 , 它为我们封装了大量的数据库操作细节 , 简化了我们的开发工作 , 同时也提供了多数据源方案 。

SpringBoot整合Mybatis-Plus多数据源

文章插图
一、前言随着业务的不断扩展和复杂度的增加 , 我们在开发过程中往往需要访问多个数据库 。比如:我们可能需要同时访问主数据库和从数据库 , 或者访问多个独立的数据库来处理不同的业务逻辑 。这时候 , 我们就需要使用多数据源来实现对多个数据库的操作 。
MyBatis-Plus则是一个优秀的ORM框架 , 它为我们封装了大量的数据库操作细节 , 简化了我们的开发工作 , 同时也提供了多数据源方案 。
  • dynamic-datasource 开源文档付费 , 属于组织参与者小锅盖发起的项目 。
  • mybatis-mate 企业级付费授权 , 资料文档免费 。
今天我们以第一种方案来具体说一下怎么实现!
MyBatis-Plus多数据源官网:https://baomidou.com/pages/a61e1b/#dynamic-datasource 。
二、简单搭建测试1、准备工作我们先把一些使用的版本列举一下 , 方便大家看!
  • Spring Boot:2.7.4
  • dynamic-datasource:3.5.1
  • mybatis-plus:3.5.1
数据库方面这里就不演示了 , 我们准备好两个MySQL数据库:
SpringBoot整合Mybatis-Plus多数据源

文章插图
2、添加依赖<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.24</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.5.1</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Druid --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.15</version></dependency><!-- mysql --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-JAVA</artifactId></dependency><!-- mybatis-plus --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version></dependency>3、yml配置spring:datasource:#使用阿里的Druidtype: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverdynamic:primary: master #设置默认的数据源或者数据源组,默认值即为masterstrict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源datasource:master:url: jdbc:mysql://127.0.0.1:3306/test?serverTimeznotallow=Asia/ShanghAIusername: rootpassword:slave_1:url: jdbc:mysql://127.0.0.1:3306/test1?serverTimeznotallow=Asia/Shanghaiusername: rootpassword:「补充:」可以继续多种模式 , 咱们以简单的进行演示!
# 多主多从纯粹多库(记得设置primary)混合配置spring:spring:spring:datasource:datasource:datasource:dynamic:dynamic:dynamic:datasource:datasource:datasource:master_1:mysql:master:master_2:oracle:slave_1:slave_1:sqlserver:slave_2:slave_2:postgresql:oracle_1:slave_3:h2:oracle_2:4、实体类 @Datapublic class Test {@TableIdprivate Integer id;private String name;private Integer age;private LocalDateTime time;private LocalDateTime createdAt;}5、多数据源配置MApper使用 @DS 切换数据源 。@DS 可以注解在方法上或类上 , 同时存在就近原则 方法上注解 优先于 类上注解 。
注解
【SpringBoot整合Mybatis-Plus多数据源】结果
没有@DS
默认数据源
@DS("dsName")
dsName可以为组名也可以为具体某个库的名称
 public interface TestDbMapper extends BaseMapper<Test> {} @DS("slave_1")public interface TestDb2Mapper extends BaseMapper<Test> {}注意:这里@DS可以添加在service中的方法上来切换数据源 , 也可以像小编一样加在Mapper接口上!


推荐阅读