日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

synamic-datasource-spring-boot-starter实现动态数据源Mysql和Sqlserver

發布時間:2025/3/19 数据库 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。