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。

  1. Druid监控

由于你使用了Druid作为数据源,你还可以配置Druid的监控功能,如Web监控统计功能、SQL监控等。这通常需要在你的Spring Boot项目中添加Druid的配置和相关的Servlet。

  1. 测试

编写测试代码来验证读写分离是否按预期工作。确保写操作(如插入、更新、删除)在主数据源上执行,而读操作(如查询)在从数据源上执行。

  1. 优化和调试

根据实际应用场景,你可能还需要对数据源配置、负载均衡策略、连接池参数等进行优化和调试,以确保系统的性能和稳定性。

文档更新时间: 2024-05-26 08:22   作者:admin