dynamic-datasource配置多数据源

概述

​ dynamic-datasource 可以动态的配置多数据源,配置简易,使用方便。

使用技术

  • SpringBoot
  • Mybatis-Plus
  • Druid
  • 数据库驱动依赖
  • dynamic-datasource

项目配置

​ 项目配置完成后,默认调用主数据源(即不做注解配置的默认调用主数据源),调用从数据源需要使用 @DS 注解显示声明。

​ @DS注解可以作用在 类、方法 上,一般写在 DAO 层类上。

pom.xml需要依赖

<!-- druid -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.18</version>
</dependency>

<!-- Mybatis Plus -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.2.0</version>
</dependency>

<!-- dynamic-datasource -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    <version>2.5.6</version>
</dependency>

application.yml配置

server:
  port: 9999

spring:
  # 配置时区
  jackson:
    time-zone: GMT+8
  # 数据源相关配置
  datasource:
    dynamic:
      # 主数据源
      primary: db1
      datasource:
        # 数据源1
        db1:
          type: com.alibaba.druid.pool.DruidDataSource
          driver-class-name: oracle.jdbc.OracleDriver
          url: jdbc:oracle:thin:@10.57.30.95:1525:WOKDSD
          username: WOKDSD
          password: WOKDSD
        # 数据源2
        db2:
          type: com.alibaba.druid.pool.DruidDataSource
          driver-class-name: oracle.jdbc.OracleDriver
          url: jdbc:oracle:thin:@10.57.30.9:1521:MESDB01
          username: joan
          password: joan2013
      # druid 全局配置
      druid:
        initial-size: 5
        min-idle: 5
        max-active: 20
        max-wait: 60000
        time-between-eviction-runs-millis: 60000
        min-evictable-idle-time-millis: 30000
        validation-query: SELECT 1 FROM DUAL
        test-while-idle: true
        test-on-borrow: true
        test-on-return: false

mybatis-plus:
  # mapper文件路径
  mapper-locations: classpath:mapper/*/*.xml
  # SQL日志输出
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

启动类配置

package com.sakura;

import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

// 启动类上需配置将Druid自动配置屏蔽
@SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class)
public class MultiDataStuApplication {

    public static void main(String[] args) {
        SpringApplication.run(MultiDataStuApplication.class, args);
    }

}

DAO层代码示例

主数据源 Mapper 接口

package com.sakura.mapper.wokdsd;

import com.baomidou.dynamic.datasource.annotation.DS;
import org.apache.ibatis.annotations.Mapper;

@Mapper
// 此注解可以不写,因为默认调用主数据源
@DS("db1")
public interface WokdsdMapper {
    Integer getUserCount();
}

从数据源 Mapper 接口

package com.sakura.mapper.mesdb01;

import com.baomidou.dynamic.datasource.annotation.DS;
import org.apache.ibatis.annotations.Mapper;

@Mapper
// 此处的 db2 为 yml中配置的数据源别名
@DS("db2")
public interface Mesdb01Mapper {
    Integer getBaseUpnCodeCount();
}

Demo路径展示

在这里插入图片描述


版权声明:本文为SakuraZzZzZzZz原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。