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

依赖

<dependency>
    <groupId>com.baomidougroupId>
    <artifactId>dynamic-datasource-spring-boot-starterartifactId>
    <version>2.5.0version>
dependency>
<dependency>
    <groupId>p6spygroupId>
    <artifactId>p6spyartifactId>
    <version>3.9.1version>
dependency>
<dependency>
    <groupId>com.alibabagroupId>
    <artifactId>druid-spring-boot-starterartifactId>
    <version>1.1.21version>
dependency>
<dependency>
    <groupId>com.baomidougroupId>
    <artifactId>mybatis-plus-boot-starterartifactId>
    <version>3.3.1.tmpversion>
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,Springboot,druid,mybatis-plus,dynamic,多数据源)