SpringBoot整合Mybatis-Plus+Druid实现读写分离

SpringBoot整合Mybatis-Plus+Druid实现读写分离
彼岸的風需求说明
- 由于演示项目是在本地,要实现读写分离需要运行两个MySQL服务,具体配置请参考 相同IP运行两个MySQL服务 一文。
- 数据库的主从同步请参考 MySQL配置主从同步 一文。
给项目导入maven依赖
1
2
3
4
5<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>在application.yml中,重新配置数据源的主表和从表连接信息。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18spring:
jackson:
time-zone: GMT+8
# 主从配置数据源
datasource:
dynamic:
primary: master # 设置默认的数据源或者数据源组,默认值即为master
datasource:
master:
username: ENC(ytrxf1igA4bazqZ6TOOc1A==)
password: ENC(j/o7k6nZe+yAMoWVWRnjFg==)
# url: jdbc:mysql://localhost:3306/test?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&useSSL=false
url: ENC(HGhXM/YPMbWuzpJU4ih1Fp1odOPrBpp0JZf+3fWXC1UEQuepTvk0tEgOpRL1z0TiK7PJyLw7BaR8vFJeA/jfFk0i3+Vm5pSx5KYFRdOvjvyg4ae+BzmFCi5qdzspZQwGZotZKtjIEls=)
slave:
username: ENC(ytrxf1igA4bazqZ6TOOc1A==)
password: ENC(j/o7k6nZe+yAMoWVWRnjFg==)
# url: jdbc:mysql://localhost:3307/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
url: ENC(FS523JDxZiuSiZWOxHO4yj0+ZYht3vAgtK/rsXztN4mKJV8KOMN0M34fBKehuJ7jB8rkJoCWptoUqyBrF1pZSevs0OAjFrDXTx31baufuvX5s9Qvbhlk7EiWvaBU0APfXDKLm+5Eivs=)完成以上配置使用注解 @DS(“slave”) 即可实现主从切换, “slave” 是yml中配置的从库名字,不加注解默认使用主库 master,注解可以在service和mapper的方法上使用。
- service层使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15// 执行从表获取数据
public IPage<TabUserInfo> listByPage(Page<TabUserInfo> pageParam, TabUserInfo userInfo) {
if (userInfo == null){
return baseMapper.selectPage(pageParam,null);
}
QueryWrapper<TabUserInfo> queryWrapper = new QueryWrapper<>();
String mobile = userInfo.getMobile();
String name = userInfo.getName();
queryWrapper
.like(mobile!=null,"mobile",mobile)
.like(name!= null,"name", name);
return baseMapper.selectPage(pageParam,queryWrapper);
} - mapper层使用
1
2
3
4
5
6
7
8
9
Map<String, Object> selByMobile(String mobile);
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果