mybatisplus多資料來源問題

2021-10-23 16:18:06 字數 1921 閱讀 4730

附:不支援原生spring事務。

注意點

spring:

datasource:

type: com.zaxxer.hikari.hikaridatasource

dynamic:

primary: system #設定預設的資料來源或者資料來源組

strict:

false #設定嚴格模式,預設false不啟動. 啟動後在未匹配到指定資料來源時候會丟擲異常,不啟動則使用預設資料來源.

datasource:

database1:

url: jdbc:mysql:

//localhost:

3306

/system?useunicode=

true

&characterencoding=

utf-

8&usessl=

false

username: username

password: password

driver-

class

-name: com.mysql.cj.jdbc.driver

#連線池可以在每個資料來源下面單獨配置,也可抽出成公共配置

hikari:

maximum-pool-size:

100 minimum-idle:

20 data-source-properties:

cacheprepstmts:

true

prepstmtcachesize:

250 prepstmtcachesqllimit:

2048

useserverprepstmts:

true

database2:

......

..

疑似坑點:碰到了多資料來源依賴在mybatisplus核心依賴之後,多資料來源依賴無法引入的問題(可能是個人環境問題)。

引入mybatisplus的多資料來源配置後,無法使用spring的原生事務,強行使用@transactional註解後會出現預設使用第乙個資料來源作為連線,此時,如果是查詢非預設資料來源資料,會報表不存在的異常。

網上的多資料來源事務配置比較繁瑣,這裡實驗了一種比較簡單的多資料來源事務配置

注:只支援單個資料來源事務,多資料來源之間的事務不支援

原因:使用@ds註解動態切換資料來源之後spring自帶事務並不知道有哪些資料來源,那麼解決也就從這裡開始

第一步

//注入資料來源給jta事務管理器,在使用spring原生事務註解時,指定事務管理器transactionmanager,由jta對多資料來源進行管理(這裡未嘗試其他事務管理器,感興趣的可以嘗試一下)

@bean

(name =

"transactionmanager"

) @primary

@order(2

)public datasourcetransactionmanager transactionmanager

(@qualifier

("datasource"

) datasource datasource)

第二步
//在service層的方法上註解相應的事務和@ds

@transactional

(transactionmanager =

"transactionmanager"

) @ds

("chddata"

)public

void

servicemethod()

Mybatis plus多資料來源配置

之前一直想配置的,但是每次出了各種問題。知道今天才配置好。原來這麼簡單。只看看人家的部落格,寫了好幾個類,結果配置失敗 我敲最後還是去mybatis plus的官網學會的 但是我按照官網的做法配置一直有問題。而且我也找到問題的原因了 應該是yml檔案裡面的 符號轉義做的有問題。但是我還沒想到解決辦法...

MyBatis Plus 動態資料來源

修改後正確的資料來源配置 dynamic datasource spring boot starter 是乙個基於springboot的快速整合多資料來源的啟動器。其支援 jdk 1.7 springboot 1.4.x 1.5.x 2.0.x。裡面會表明優劣勢 示例配置資料來源 datasourc...

SpringBoot Redis 多資料來源

session存到redis後,cache和session是在乙個庫的 使用redis多資料配置可以分開。這樣ssession的redis伺服器可以單獨作為認證服務,多個業務模組可以配置單獨的cache庫,防止多模組key衝突的問題。原始碼 github 增加redis2的配置spring.redi...