概述
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版权协议,转载请附上原文出处链接和本声明。