1. 程式人生 > 程式設計 >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,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多資料來源內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!