SpringBoot基于注解形式配置多数据源@DS

@TOC()

1.引入依赖

      <!-- dynamic-datasource 多数据源-->
      <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
        <version>3.5.2</version>
      </dependency>

2.配置文件 application-pro.yml

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    dynamic:
      # 设置默认的数据源或者数据源组,默认值即为 master
      primary: master
      # 严格模式 匹配不到数据源则报错
      strict: true
      datasource:
		# 主库从库名字自定义
        # 主库
        master:
          driver-class-name: com.mysql.cj.jdbc.Driver
          username: xxx
          password: xxxxx
          url: jdbc:mysql://192.168.1.1:3306/database1?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true&failOverReadOnly=false&serverTimezone=Asia/Shanghai
        # 从库1  
		slave:
          driver-class-name: com.mysql.cj.jdbc.Driver
          username: xxx
          password: xxxxx
          url: jdbc:mysql://192.168.1.2:3307/database2?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true&failOverReadOnly=false&serverTimezone=Asia/Shanghai
        # 从库2
		slave2:
          driver-class-name: com.mysql.cj.jdbc.Driver
          username: xxx
          password: xxxxx
          url: jdbc:mysql://192.168.1.3:3308/database3?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true&failOverReadOnly=false&serverTimezone=Asia/Shanghai		
      druid:
        enable: true
        max-active: 150
        min-idle: 50
        initial-size: 50
        max-wait: 60000
        time-between-eviction-runs-millis: 60000
        validation-query: select server_status()
        test-on-return: false
        test-while-idle: true
        test-on-borrow: false
        async-close-connection-enable: true
        async-init: true

3.对应mapper接口使用不同的数据源

import com.baomidou.dynamic.datasource.annotation.DS;

@Mapper
public class UserService {
   
 	// m默认使用名为 "master" 的数据源
    public void updateUser(User user) {
   
        // 创建用户
    }
    
    @DS("master") // 使用名为 "master" 的数据源
    public void createUser(User user) {
   
        // 创建用户
    }

    @DS("slave") // 使用名为 "slave" 的数据源
    public User getUserById(long id) {
   
        // 根据ID获取用户
        return null;
    }
	@DS("slave1") // 使用名为 "slave1" 的数据源
    public User getUserById(long id) {
   
        // 根据ID获取用户
        return null;
    }
    // 其他方法...
}

4.对应mapper接口使用相同的数据源

import com.baomidou.dynamic.datasource.annotation.DS;
// 使用名为 "master" 的数据源
@Mapper
@DS("master")
public class UserService {
   

 
    public void createUser(User user) {
   
        // 创建用户
    }

  
    public User getUserById(long id) {
   
        // 根据ID获取用户
        return null;
    }

    public User getUserById(long id) {
   
        // 根据ID获取用户
        return null;
    }
    // 其他方法...
}

相关推荐

  1. SpringBoot基于注解形式配置数据@DS

    2024-02-01 01:24:02       32 阅读
  2. 基于SpringBoot+Druid实现数据:原生注解

    2024-02-01 01:24:02       21 阅读
  3. Springboot实现配置数据

    2024-02-01 01:24:02       39 阅读
  4. Springboot JPA实现数据配置

    2024-02-01 01:24:02       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-01 01:24:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-01 01:24:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-01 01:24:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-01 01:24:02       20 阅读

热门阅读

  1. MicroPython核心:编译器

    2024-02-01 01:24:02       42 阅读
  2. Vue-45、Vue中全局事件总线

    2024-02-01 01:24:02       32 阅读
  3. [云原生] Docker 安全

    2024-02-01 01:24:02       33 阅读
  4. 3D 转换

    3D 转换

    2024-02-01 01:24:02      29 阅读
  5. 蓝桥杯2024/1/31-----底层测试模板

    2024-02-01 01:24:02       31 阅读
  6. 关于我用AI编写了一个聊天机器人……(7)

    2024-02-01 01:24:02       41 阅读
  7. 继承和原型链

    2024-02-01 01:24:02       31 阅读
  8. 使用 Docker 部署 Nacos 并配置 MySQL 数据源

    2024-02-01 01:24:02       40 阅读