Springboot mybatis plus druid多数据源解决方案 dynamic-datasource的使用详解
作者:唥雨凊
这篇文章主要介绍了Springboot mybatis plus druid多数据源解决方案 dynamic-datasource的使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
依赖
<dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>2.5.0</version> </dependency> <dependency> <groupId>p6spy</groupId> <artifactId>p6spy</artifactId> <version>3.9.1</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.21</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.1.tmp</version> </dependency>
p6spy配置文件spy.properties,有性能影响,生产环境建议关闭
#3.2.1以上使用 modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory #3.2.1以下使用或者不配置 #modulelist=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory # 自定义日志打印 logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger #日志输出到控制台 appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger # 使用日志系统记录 sql #appender=com.p6spy.engine.spy.appender.Slf4JLogger # 设置 p6spy driver 代理 deregisterdrivers=true # 取消JDBC URL前缀 useprefix=true # 配置记录 Log 例外,可去掉的结果集有error,info,batch,debug,statement,commit,rollback,result,resultset. excludecategories=info,debug,result,commit,resultset # 日期格式 dateformat=yyyy-MM-dd HH:mm:ss # 实际驱动可多个 #driverlist=org.h2.Driver # 是否开启慢SQL记录 outagedetection=true # 慢SQL记录标准 2 秒 outagedetectioninterval=5
配置文件application.yml
server:
port: 8080
spring:
datasource:
dynamic:
p6spy: true # 默认false,建议线上关闭。
primary: master #设置默认的数据源或者数据源组,默认值即为master
datasource:
master:
url: jdbc:mysql://localhost:3306/bdata?serverTimezone=GMT%2B8&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=true&allowMultiQueries=true
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
slave:
url: jdbc:mysql://localhost:3306/lmkstudy?serverTimezone=GMT%2B8&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=true&allowMultiQueries=true
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
druid:
password: root
username: root
# 初始化连接大小
initial-size: 5
#最大连接池数量
max-active: 20
# 最小连接池数量
min-idle: 3
# 配置获取连接等待超时的时间 单位毫秒
max-wait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
time-between-eviction-runs-millis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
min-evictable-idle-time-millis: 300000
# 测试连接
validation-query: select
# 申请连接的时候检测,建议配置为true,不影响性能,并且保证安全性
test-while-idle: true
# 获取连接时执行检测,建议关闭,影响性能
test-on-borrow: false
# 归还连接时执行检测,建议关闭,影响性能
test-on-return: false
# 打开PSCache,并且指定每个连接上PSCache的大小
pool-prepared-statements: true
# 配置监控统计拦截器 防火墙 日志配置
# stat监控数据库性能
# wall 用于防火墙
# 日志 slf4j logback
# log4j
# log4j2
# 配置多个英文逗号分隔
filters: stat,wall,slf4j
max-pool-prepared-statement-per-connection-size: 20
# 合并多个DruidDataSource的监控数据
use-global-data-source-stat: true
# 通过connectProperties属性来打开mergeSql功能;慢SQL记录 SQL优化
connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
# ===========监控配置===========
# WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter
web-stat-filter:
#是否启用StatFilter默认值false
enabled: true
# 拦截所有的
url-pattern: /*
# 排除一些不必要的url,比如*:js,/jslib/*等等:
exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico, /druid/*"
# 关闭和开启session 统计功能 默认关闭
# session-stat-enable: true
# sessionStatMaxCount是1000个
# session-stat-max-count: 1000
# 配置principalSessionName,使得druid能够知道当前的session的用户是谁
# principal-session-name:
# StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置
stat-view-servlet:
# 是否启用StatViewServlet默认值true
enabled: true
url-pattern: /druid/*
# 界面上有一个重置功能 执行这个操作之后,会导致所有计数器清零,重新计数 建议false
reset-enable: false
# 登录的后台的用户名,密码
login-username: admin
login-password: admin
mybatis-plus:
type-aliases-package: com.site.datasource.entity
mapper-locations: classpath*:mapper/*.xml
service层添加注解@DS(“slave”),选定数据源
@DS("slave")
@Service("userService")
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}
启动类上添加@SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class)
@SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class)
public class ThreadApplication {
public static void main(String[] args) {
SpringApplication.run(ThreadApplication.class, args);
}
}
遇到的坑:记得要去掉DruidConfig这个文件,不然会报错
到此这篇关于Springboot mybatis plus druid多数据源解决方案 dynamic-datasource的使用的文章就介绍到这了,更多相关Springboot mybatis plus druid多数据源内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
- SpringBoot集成Druid实现多数据源的两种方式
- SpringBoot整合Mybatis-Plus+Druid实现多数据源配置功能
- springboot mybatis druid配置多数据源教程
- 关于springboot配置druid数据源不生效问题(踩坑记)
- 使用springboot+druid双数据源动态配置操作
- springboot配置多数据源并集成Druid和mybatis的操作
- SpringBoot环境Druid数据源使用及特点
- SpringBoot整合Druid数据源过程详解
- 通过springboot+mybatis+druid配置动态数据源
- springboot 动态数据源的实现方法(Mybatis+Druid)
- Spring Boot+Mybatis+Druid+PageHelper实现多数据源并分页的方法
- 详解Spring Boot整合Mybatis实现 Druid多数据源配置
- spring使用xml方式整合Druid数据源连接池
