Springboot mybatis plus druid多数据源解决方案 dynamic

网友投稿 562 2022-11-13


Springboot mybatis plus druid多数据源解决方案 dynamic

依赖

com.baomidou

dynamic-datasource-spring-boot-starter

2.5.0

p6spy

p6spy

3.9.1

com.alibaba

druid-spring-boot-starter

1.1.21

com.baomidou

mybatis-plus-boot-starter

3.3.1.tmp

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:

pdxNKsF type-aliases-package: com.site.datasource.entity

mapper-locations: classpath*:mapper/*.xml

service层添加注解@DS(“slave”),选定数据源

@DS("slave")

@Service("userService")

public class UserServiceImpl extends ServiceImpl 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这个文件,不然会报错


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Mybatisplus自动填充实现方式及代码示例
下一篇:Java序列化常见实现方法代码实例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~