https://blog.csdn.net/Charon_1120/article/details/131785578
在Spring Boot项目中,结合使用dynamic-datasource-spring-boot-starter、MyBatis-Plus和Druid来实现读写分离通常涉及以下几个步骤:
添加依赖
在你的pom.xml文件中,添加dynamic-datasource-spring-boot-starter、MyBatis-Plus和Druid的依赖。
xml
<!-- dynamic-datasource-spring-boot-starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>你的版本号</version>
</dependency>
<!-- MyBatis-Plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>你的版本号</version>
</dependency>
<!-- Druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>你的版本号</version>
</dependency>
配置数据源
在application.yml或application.properties中配置主数据源(写)和从数据源(读)。
yaml
spring:
datasource:
dynamic:
primary: master # 设置默认的数据源或者数据源组,默认值即为master
datasource:
master: # 主数据源
url: jdbc:mysql://主库地址:3306/数据库名?useSSL=false&serverTimezone=UTC
username: 用户名
password: 密码
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
# Druid的其他配置...
slave1: # 从数据源1
url: jdbc:mysql://从库1地址:3306/数据库名?useSSL=false&serverTimezone=UTC
username: 用户名
password: 密码
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
# Druid的其他配置...
# 可以继续添加 slave2, slave3 等从数据源
MyBatis-Plus配置
配置MyBatis-Plus的Mapper扫描路径、类型别名等。
yaml
mybatis-plus:
mapper-locations: classpath:/mapper/*.xml
type-aliases-package: com.example.entity # 实体类所在包
读写分离策略
dynamic-datasource-spring-boot-starter默认支持注解、AOP等方式来实现读写分离。你可以通过@DS注解指定数据源,或者在方法上使用AOP来动态切换数据源。
例如,你可以使用@DS(“slave1”)来指定某个查询方法使用从数据源slave1。
- Druid监控
由于你使用了Druid作为数据源,你还可以配置Druid的监控功能,如Web监控统计功能、SQL监控等。这通常需要在你的Spring Boot项目中添加Druid的配置和相关的Servlet。
- 测试
编写测试代码来验证读写分离是否按预期工作。确保写操作(如插入、更新、删除)在主数据源上执行,而读操作(如查询)在从数据源上执行。
- 优化和调试
根据实际应用场景,你可能还需要对数据源配置、负载均衡策略、连接池参数等进行优化和调试,以确保系统的性能和稳定性。