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

@TOC()

1.引入依赖

      
      
        com.baomidou
        dynamic-datasource-spring-boot-starter
        3.5.2
      

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;
    }
    // 其他方法...
}

你可能感兴趣的:(Spring,spring,boot,datasoure,多数据源)