MybatisPlus多數據源配置
1.簡介
多數據源即需要在不同庫上進行操作時所需要的配置,分為不同服務跨庫進行操作、相同服務跨庫進行操作,本例中按照mybatisPlus的方法進行操作處理。
這種也可以稱為動態數據源,主要操作是在方法上、類上或者mapper上進行@DS(“配置好的數據源的名稱”)注解的標注,動態切換數據源,沒有標注的會使用默認配置的數據源,標注的名字的則會使用已存在的配置的這個名字的數據源,簡單便捷~
2.mybatisPlus多數據源操作
官網文檔
2.1 首先是導入多數據源的依賴
注意一點是次數導入的依賴的版本號需要與項目其他相關的使用mybatisPlus的版本號保持一致,要不一致可能會導致循環依賴(不同版本直接,不知道用哪一個)的情況。
2.2 配置application.yml中的多數據源
此處以mysql為例,其中dynamic下的primary為默認的數據源,在后面使用中,如果沒有使用@DS進行標注使用其他的數據源,會默認使用此處的數據源。
在spring.datasource.dynamic.datasource下是配置的多數據源,名稱可以任意起,可以配置很多個。
#配置數據源 spring: datasource: type: com.zaxxer.hikari.HikariDataSource # 數據源類型:HikariCP dynamic: primary: master #設置默認的數據源或者數據源組,默認值即為master datasource: master: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/test1?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false username: root password: password slave: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/test2?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false username: root password: password
2.3 使用
只需要在方法或者類名上加@DS(“上面配置的多數據源簽名的名字”),即可開啟多數據源的查詢操作。
其中多數據源在不切換數據源的sql查詢是這樣的 select * from 數據庫1.t1 LEFT JOIN 數據庫2.t2 ON 數據庫1.t1.id = 數據庫2.t2.id,只需要在我們正常的sql中的字段前面加上數據庫名就可以了,這里是適用于同服務不同庫直接的操作。
@DS("slave") public XXX test(XXX xxx...) { }
使用時需要注意以下幾點:
2.3.1 不能使用事務,否則數據源不會切換,使用的還是第一次加載的數據源;
2.3.2 第一次加載數據源之后,第二次、第三次…操作其它數據源,如果數據源不存在,使用的還是第一次加載的數據源;
2.3.3 數據源名稱不要包含下劃線,否則不能切換。
2.4 一次使用多個數據源進行操作
一次使用多個數據源進行操作,是通過多線程的方法開啟多個個連接進行操作的。參考
由于沒有相關業務暫時沒有測試過下面這種方法,在此記錄一下待后面有空了進行測試總結~
@Override @DataSource(value = DataSourceNames.TWO) public Map
參考一?@DS輕松解決動態數據源問題
參考二 事務和@DS同時使用的操作
因為所需要處理的業務在同一個服務器上的跨庫操作,所以暫時沒有測過不同服務直接的跨庫操作,還有上面這種@DS和事務一起使用的情況暫時沒有測過。
參考三 若依框架配置多數據源
參考四 若以框架配置數據源官網
以上就是今天爬坑內容,爬完一個坑還有另一個坑,希望后面能順順利利的~加油~
SQL 數據庫
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。