synamic-datasource-spring-boot-starter实现动态数据源Mysql和Sqlserver
場景
若依前后端分離版本地搭建開發環境并運行項目的教程:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108465662
若依微服務版手把手教你本地搭建環境并運行前后端項目:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/109363303
在上面使用前后端分離的架構和微服務的架構將項目搭建起來之后,默認連接的
是一個Mysql數據庫。
然后若依自帶對多數據源的支持,
但是前后端分離版的配置了多數據源之后,需要在每個方法上添加注解進行區分
使用微服務版的,可以單獨抽離出一個服務,使整個服務都連接到另一個數據源。
但是如果在同一個服務中,除了某個特殊的業務需要單獨連接Sqlserver數據庫,其他
正常請求Mysql主庫的數據。
可以使用dynamic-datasource-spring-starter,基于 SpringBoot 多數據源 動態數據源 主從分離 快速啟動器 支持分布式事務
其Gitee地址為:
https://gitee.com/baomidou/dynamic-datasource-spring-boot-starter
約定
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。
實現
首先在需要使用的服務的pom文件中引入依賴
??????? <!-- dynamic-datasource--><dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.2.1</version></dependency>因為這里的從庫數據源需要連接Sqlserver,所以需要再添加Sqlserver的依賴
??????? <!-- sqlserver--><dependency><groupId>com.microsoft.sqlserver</groupId><artifactId>mssql-jdbc</artifactId><version>7.4.1.jre8</version></dependency>然后找到配置數據源的配置文件,前后端分離是yml文件,微服務是在Nacos中。
看一下官方的配置示例
spring:datasource:dynamic:primary: master #設置默認的數據源或者數據源組,默認值即為masterstrict: false #嚴格匹配數據源,默認false. true未匹配到指定數據源時拋異常,false使用默認數據源datasource:master:url: jdbc:mysql://xx.xx.xx.xx:3306/dynamicusername: rootpassword: 123456driver-class-name: com.mysql.jdbc.Driver # 3.2.0開始支持SPI可省略此配置slave_1:url: jdbc:mysql://xx.xx.xx.xx:3307/dynamicusername: rootpassword: 123456driver-class-name: com.mysql.jdbc.Driverslave_2:url: ENC(xxxxx) # 內置加密,使用請查看詳細文檔username: ENC(xxxxx)password: ENC(xxxxx)driver-class-name: com.mysql.jdbc.Driver#......省略#以上會配置一個默認庫master,一個組slave下有兩個子庫slave_1,slave_2這里以自己的需要進行修改,這里是
# Spring spring:datasource:dynamic:primary: mysqldatasource:#mysql數據庫mysql:driver-class-name: com.mysql.cj.jdbc.Driverurl:jdbc:mysql://Mysql數據庫的IP:3306/數據庫名?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8username: rootpassword: 密碼#sqlserversqlserver:driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriverurl: jdbc:sqlserver://Sqlserver數據庫的IP:1433;DatabaseName=數據庫名username: rootpassword: 密碼這里的主庫依然是Mysql數據,只有在某個業務下需要查詢從庫Sqlserver的數據
如上配置后怎樣使用數據源切換
官方示例
就是使用@DS注解即可。
如果沒有注解則默認數據源。
所以這里在需要特殊查詢Sqlserver數據庫的業務的Service的實現上添加@DS注解,參數為上面
配置文件的從庫數據源的節點名字
這樣就能實現除此業務外都使用配置的Mysql主庫數據源,只有加了注解的才使用從庫數據源的效果。
總結
以上是生活随笔為你收集整理的synamic-datasource-spring-boot-starter实现动态数据源Mysql和Sqlserver的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vue中使用a标签实现点击在新标签页中打
- 下一篇: Springboot与抓拍系统对接实现查