Springboot + mybatis-plus实现多数据源配置
Springboot + mybatis-plus实现多数据源配置
原理上和利用切面实现多数据源配置基本一致,只是有mybatis-plus实现了。如果用的mybatis,可以利用手动aop动态切换
参考https://blog.csdn.net/yy1209357299/article/details/125785635?spm=1001.2014.3001.5502
项目结构
项目依赖
<!--mysql依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<!-- mybatisPlus的依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.6</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>2.5.0</version>
</dependency>
配置文件
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
aop:
proxy-target-class: true
autoconfigure:
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
datasource:
type: com.alibaba.druid.pool.DruidDataSource
dynamic:
primary: ds1 #设置默认的数据源或者数控组,默认值即为master
datasource:
ds1:
url: jdbc:mysql://localhot:3306/test?characterEncoding=UTF-8&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: 123456
driverClassName: com.mysql.cj.jdbc.Driver
ds2:
url: jdbc:mysql://localhot:3306/test?characterEncoding=UTF-8&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: 123456
driverClassName: com.mysql.cj.jdbc.Driver
druid:
filters: stat,slf4j
# 初始化连接大小 默认:0
initial-size: 5
# 最小空闲连接数 默认:0
min-idle: 5
# 最大连接数 默认:8
max-active: 20
# 获取连接等待超时的时间(毫秒) 默认:-1
max-wait: 60000
# 查询超时时间(秒)
query-timeout: 90
# 用来检测连接是否有效的sql,要求是一个查询语句
validation-query: SELECT 1 FROM DUAL
# 申请连接时检测连接可用性 默认:false
test-on-borrow: false
# 归还连接检测 默认:false
test-on-return: false
# 超时是否检测连接可用性
test-while-idle: true
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接 (毫秒)
time-between-eviction-runs-millis: 600000
# 配置一个连接在池中最小生存的时间(毫秒,默认30分钟)
min-evictable-idle-time-millis: 300000
# 通过别名的方式配置扩展插件,常用的插件有:监控统计用的filter:stat;日志用的filter:log4j;防御sql注入的filter:wall
# 慢SQL记录 https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatFilter
filter:
stat:
log-slow-sql: true
slow-sql-millis: 20000
db-type: mysql
# SQL合并 默认:false
merge-sql: false
wall:
config:
delete-allow: true
drop-table-allow: false
enabled: true
db-type: mysql
# 是否缓存PreparedStatement. PSCache对支持游标的数据库性能提升巨大,比如说oracle.在mysql下建议关闭.
pool-prepared-statements: false
# 每个连接上PSCache的大小
max-pool-prepared-statement-per-connection-size: 20
# 合并多个DruidDataSource的监控数据
use-global-data-source-stat: true
启动类
@MapperScan("mapper包的路径")
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
dao层配置
1、db1
@Mapper
@DS("db1")
2、db2
@Mapper
@DS("db2")
版权声明:本文为yy1209357299原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。