Springboot mybatis plus druid多数据源解决方案 dynamic-datasource的使用详解

 更新时间:2020年11月18日 10:30:34   作者:唥雨凊  
这篇文章主要介绍了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多数据源内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java如何实现将类文件打包为jar包

    Java如何实现将类文件打包为jar包

    这篇文章主要介绍了Java如何实现将类文件打包为jar包,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Java线程池实现原理详解

    Java线程池实现原理详解

    在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源,在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收,本文将对Java线程池实现原理进行详细介绍,需要的朋友可以参考下
    2023-07-07
  • Java中char[]输出不是内存地址的原因详解

    Java中char[]输出不是内存地址的原因详解

    这篇文章主要介绍了关于Java中char[]输出为什么不是内存地址的原因,文中通过示例代码介绍的很详细,需要的朋友们可以参考学习。
    2017-03-03
  • java中实现对象排序的两种方法(Comparable,Comparator)

    java中实现对象排序的两种方法(Comparable,Comparator)

    这篇文章主要给大家介绍了关于java中实现对象排序的两种方法,一种是实现Comparable进行排序,另一种是实现Comparator进行排序,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • Spring aop+反射实现电话号加密

    Spring aop+反射实现电话号加密

    线上项目涉及大量查询接口中,存在电话号明文展示不合规的问题。如果对每个接口返回结果中电话号相关字段修改相关代码逻辑,则工作量较大花费时间多。因此设计电话号加密注解,减少工作量。
    2021-06-06
  • Maven分模块开发执行指令失败的问题

    Maven分模块开发执行指令失败的问题

    Maven分模块开发,行指令失败,modules.module[3]‘ specifies duplicate child module maven_dao @ line 29, column 1的问题,本文给大家分享解决方法,感兴趣的朋友跟随小编一起看看吧
    2020-09-09
  • Eureka源码阅读Client启动入口注册续约及定时任务

    Eureka源码阅读Client启动入口注册续约及定时任务

    这篇文章主要为大家介绍了Eureka源码阅读Client启动入口注册续约及定时任务示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • mybatis教程之动态sql语句_动力节点Java学院整理

    mybatis教程之动态sql语句_动力节点Java学院整理

    这篇文章主要介绍了mybatis教程之动态sql语句,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • springcloud+nacos实现灰度发布示例详解

    springcloud+nacos实现灰度发布示例详解

    这篇文章主要介绍了springcloud+nacos实现灰度发布,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • logback标记日志过滤器MarkerFilter源码解读

    logback标记日志过滤器MarkerFilter源码解读

    这篇文章主要为大家介绍了logback标记日志过滤器MarkerFilter源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11

最新评论