什么?不知道 MyBatisPlus 多数据源(动态数据源)干什么的,怎么使用,看这篇文章就够了。
·
13.12 多数据源
随着项目规模的扩大,单一数据源已无法满足复杂业务需求,多数据源(动态数据源)应运而生。本文将介绍两种 MyBatis-Plus 的多数据源扩展插件:开源生态的
dynamic-datasource和 企业级生态的mybatis-mate。这里介绍开源生态的dynamic-datasource,我这里是 SpringBoot3,SpringBoot2的导入依赖有所差异,具体参照 – 官网
13.12.1 使用步骤
13.12.1.1 导入依赖
SpringBoot2 导入的依赖和这个不一样,具体参照官网
<!-- 导入动态数据源依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot3-starter</artifactId>
<version>4.3.1</version>
</dependency>
13.12.1.2 配置动态数据源
spring:
datasource:
dynamic:
# 设置默认数据源, 当没有指定数据源时/或者指定数据源不存在,都会默认使用该数据
primary: master
# 是否严格匹配数据源,当指定数据源不存在时,是直接报错还是采用默认的数据源
strict: false
datasource: # 多数据配置
master: #主数据源名称
url: jdbc:mysql://localhost:3306/db2
username: root
password: 123456
# driver-class-name: com.mysql.cj.jdbc.Driver 可以省略不写
slave: #从数据源名称
url: jdbc:mysql://localhost:3306/db1
username: root
password: 123456
# driver-class-name: com.mysql.cj.jdbc.Driver 可以省略不写
13.12.1.3 @DS 切换数据源
这个注解不仅可以作用到类上,同样可以作用到方法上,根据 “就近原则” 当两个同时存在时,方法上的优先

13.12.1.4 测试代码演示
@SpringBootTest
class WorkDay07Task01ApplicationTests {
//只要在两个Service上配置的数据源不同,两个访问的是不同的数据库
@Autowired
private UserServiceImpl service;
@Autowired
private AccountServiceImpl accountService;
@Test
void test01() {
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("id", 1214840833);
service.getOne(wrapper);
}
@Test
void test02() {
QueryWrapper<Account> wrapper = new QueryWrapper<>();
wrapper.eq("id", 1);
accountService.getOne(wrapper);
}
}
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)