最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot+mybatis-plus實(shí)現(xiàn)多數(shù)據(jù)源配置(開箱即用)

 更新時(shí)間:2025年12月02日 09:41:02   作者:o***7417  
本文介紹了dynamic-datasource-spring-boot-starter,一個(gè)用于快速集成多數(shù)據(jù)源的Spring Boot啟動(dòng)器,它支持多種數(shù)據(jù)源配置、分組、加密、初始化表結(jié)構(gòu)、懶加載等特性,并提供了對(duì)多種數(shù)據(jù)庫(kù)和組件的集成方案,感興趣的朋友跟隨小編一起看看吧

一、前言

環(huán)境說明:Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.3.1.RELEASE

正常情況下我們?cè)陂_發(fā)系統(tǒng)的時(shí)候都是使用一個(gè)數(shù)據(jù)源,但是由于有些項(xiàng)目同步數(shù)據(jù)的時(shí)候不想造成數(shù)據(jù)庫(kù)io消耗壓力過大,便會(huì)一個(gè)項(xiàng)目對(duì)應(yīng)多個(gè)數(shù)據(jù)源,即就會(huì)有個(gè)問題,Springboot配置db都是默認(rèn)加載數(shù)據(jù)源連接,連接池默認(rèn)配置,但是配置多個(gè)數(shù)據(jù)庫(kù)url,這該怎么實(shí)現(xiàn)呢?

不用擔(dān)心,我們就是為了解決而寫的,不用復(fù)雜的實(shí)現(xiàn)方式,什么Springboot+mybatis在配置文件中配置多個(gè)數(shù)據(jù)源,然后mapper指定連接配置等,不,不需要,我嫌太麻煩了,今天我就要給你們安利它:**dynamic-datasource-spring-boot-starter,一個(gè)基于springboot的快速集成多數(shù)據(jù)源的啟動(dòng)器,開箱即用,超級(jí)方便。**接下來我就為大家一一講解,雖然配置很簡(jiǎn)單,但是坑也比較多,bug菌都為大家給淌過啦,你們就直接直接拿去用即可!

二、dynamic-datasource-spring-boot-starter

一、簡(jiǎn)介

dynamic-datasource-spring-boot-starter 是一個(gè)基于springboot的快速集成多數(shù)據(jù)源的啟動(dòng)器。

其支持 Jdk 1.7+, SpringBoot 1.4.x 1.5.x 2.x.x。

二、特性

  • 支持 數(shù)據(jù)源分組 ,適用于多種場(chǎng)景 純粹多庫(kù) 讀寫分離 一主多從 混合模式。
  • 支持?jǐn)?shù)據(jù)庫(kù)敏感配置信息 加密 ENC()。
  • 支持每個(gè)數(shù)據(jù)庫(kù)獨(dú)立初始化表結(jié)構(gòu)schema和數(shù)據(jù)庫(kù)database。
  • 支持無數(shù)據(jù)源啟動(dòng),支持懶加載數(shù)據(jù)源(需要的時(shí)候再創(chuàng)建連接)。
  • 支持 自定義注解 ,需繼承DS(3.2.0+)。
  • 提供并簡(jiǎn)化對(duì)Druid,HikariCp,BeeCp,Dbcp2的快速集成。
  • 提供對(duì)Mybatis-Plus,Quartz,ShardingJdbc,P6sy,Jndi等組件的集成方案。
  • 提供 自定義數(shù)據(jù)源來源 方案(如全從數(shù)據(jù)庫(kù)加載)。
  • 提供項(xiàng)目啟動(dòng)后 動(dòng)態(tài)增加移除數(shù)據(jù)源 方案。
  • 提供Mybatis環(huán)境下的 純讀寫分離 方案。
  • 提供使用 spel動(dòng)態(tài)參數(shù) 解析數(shù)據(jù)源方案。內(nèi)置spel,session,header,支持自定義。
  • 支持 多層數(shù)據(jù)源嵌套切換 。(ServiceA >>> ServiceB >>> ServiceC)。
  • 提供 **基于seata的分布式事務(wù)方案。
  • 提供 本地多數(shù)據(jù)源事務(wù)方案。

三、使用方法

1、老規(guī)矩,先引依賴包。引入dynamic-datasource-spring-boot-starter;

<!--配置多數(shù)據(jù)源-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    <version>3.5.0</version>
</dependency>

2、配置數(shù)據(jù)源。

spring:
  datasource:
    dynamic:
      primary: master #設(shè)置默認(rèn)的數(shù)據(jù)源或者數(shù)據(jù)源組,默認(rèn)值即為master
      strict: false #嚴(yán)格匹配數(shù)據(jù)源,默認(rèn)false. true未匹配到指定數(shù)據(jù)源時(shí)拋異常,false使用默認(rèn)數(shù)據(jù)源
      datasource:
        master:
          driver-class-name: com.mysql.cj.jdbc.Driver   #3.2.0開始支持SPI可省略此配置
          url: jdbc:mysql://localhost:3306/springboot_db?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8
          username: root
          password: 123456
        slave_1:
          driver-class-name: com.mysql.cj.jdbc.Driver   #3.2.0開始支持SPI可省略此配置
          url: jdbc:mysql://127.0.0.1:3306/test_db2?setUnicode=true&characterEncoding=utf8
          username: root
          password: 123456

拓展:同時(shí)也支持多主多從,多種不同庫(kù)及混合配置。

3、實(shí)戰(zhàn)演示:

我們先來指定配置環(huán)境:

配置好配置環(huán)境后,先啟動(dòng)下項(xiàng)目,查看庫(kù)是否都正常連接。如下控制臺(tái)啟動(dòng)打印的日志,表示兩庫(kù)都正常連接。

接著,我們先創(chuàng)建兩個(gè)實(shí)體,分別對(duì)應(yīng)db1和db2的user表:

接著寫一個(gè)controller類;

接著接口實(shí)現(xiàn)層:

這里我就為大家講解一下了。

數(shù)據(jù)源切換,使用的是提供的**@DS**注解。

其中@DS 可以注解在方法上或類上,同時(shí)存在就近原則 方法上注解 優(yōu)先于 類上注解。(所以你們看上邊,注解在類上使用的是主庫(kù),但是基于下邊某個(gè)方法就是制定了從庫(kù),但是我這樣放一起是為了給大家看比較,一般會(huì)直接分類寫,不會(huì)一個(gè)類上出現(xiàn)多個(gè)數(shù)據(jù)源。)

注:@DS(“dsName”) dsName可以為組名也可以為具體某個(gè)庫(kù)的名稱。

4、訪問接口查看結(jié)果。

先是訪問接口1:localhost:8888/dbUser/query-users-for-db-one

如下請(qǐng)求結(jié)果,大家請(qǐng)看,成功拿到了db1庫(kù)中的數(shù)據(jù)。

再請(qǐng)求下接口2:localhost:8888/dbUser/query-users-for-db-two

如下請(qǐng)求結(jié)果,大家請(qǐng)看,成功拿到了db2庫(kù)中的數(shù)據(jù)。

再做個(gè)測(cè)試,我們把db1與db2中的數(shù)據(jù)同時(shí)返回,看看能否成功:

我們先寫兩接口,然后分別將數(shù)據(jù)用map返回:

請(qǐng)求結(jié)果如下:

然后給大家看下數(shù)據(jù)庫(kù)數(shù)據(jù),以免被大家說是同一個(gè)庫(kù)中的數(shù)據(jù)。

好啦,以上就是同mysql數(shù)據(jù)源的配置流程及實(shí)例演示啦,如果還有啥不清楚的小伙伴,歡迎下方留言。接著就是針對(duì)后邊兩種配置方式,就自行嘗試?yán)?,看上去都是一樣的?/p>

有需求的小伙伴,看完之后,使用起來是不是很簡(jiǎn)單,壓根不需要用傳統(tǒng)的mybatis配置多個(gè)連接器,mybatis-plus都幫我們封裝好啦,開箱即用。

到此這篇關(guān)于SpringBoot+mybatis-plus實(shí)現(xiàn)多數(shù)據(jù)源配置(開箱即用)的文章就介紹到這了,更多相關(guān)springboot mybatisplus多數(shù)據(jù)源配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • spring Security的自定義用戶認(rèn)證過程詳解

    spring Security的自定義用戶認(rèn)證過程詳解

    這篇文章主要介紹了spring Security的自定義用戶認(rèn)證過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 基于多線程并發(fā)的常見問題(詳解)

    基于多線程并發(fā)的常見問題(詳解)

    下面小編就為大家?guī)硪黄诙嗑€程并發(fā)的常見問題(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • SpringBoot過濾器與攔截器使用方法深入分析

    SpringBoot過濾器與攔截器使用方法深入分析

    大家應(yīng)該都曉得實(shí)現(xiàn)過濾器需要實(shí)現(xiàn) javax.servlet.Filter 接口,而攔截器會(huì)在處理指定請(qǐng)求之前和之后進(jìn)行相關(guān)操作,配置攔截器需要兩步,本文通過實(shí)例代碼給大家介紹SpringBoot 過濾器和攔截器的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2022-12-12
  • 基于Java語(yǔ)言在窗體上實(shí)現(xiàn)飛機(jī)大戰(zhàn)小游戲的完整步驟

    基于Java語(yǔ)言在窗體上實(shí)現(xiàn)飛機(jī)大戰(zhàn)小游戲的完整步驟

    這篇文章主要給大家介紹了基于Java語(yǔ)言在窗體上實(shí)現(xiàn)飛機(jī)大戰(zhàn)小游戲的完整步驟,文中通過圖文以及實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-02-02
  • 淺拷貝和深拷貝原理分析

    淺拷貝和深拷貝原理分析

    Java 對(duì)象拷貝是為對(duì)象賦值的一種方式,簡(jiǎn)單來說就是創(chuàng)建一個(gè)和原對(duì)象相同的對(duì)象,新創(chuàng)建的對(duì)象是原對(duì)象的一個(gè)副本。面試官賊拉喜歡在面試的時(shí)候問一問你淺拷貝和深拷貝的原理
    2021-08-08
  • Java獲取文件后綴名的方法小結(jié)

    Java獲取文件后綴名的方法小結(jié)

    在Java開發(fā)中,尤其是Web應(yīng)用或文件處理場(chǎng)景中,獲取文件后綴名是一個(gè)高頻需求,無論是文件上傳驗(yàn)證、類型過濾、格式校驗(yàn),還是日志記錄,后綴名的正確提取都是核心基礎(chǔ),本文給大家介紹了Java獲取文件后綴名的方法,需要的朋友可以參考下
    2025-05-05
  • Java面試必考的關(guān)鍵字的用法匯總

    Java面試必考的關(guān)鍵字的用法匯總

    這篇文章主要為大家詳細(xì)介紹了Java中的幾種關(guān)鍵字相關(guān)知識(shí),本文比較適合剛?cè)肟覬ava的小白以及準(zhǔn)備秋招的大佬閱讀,需要的小伙伴快收藏起來吧
    2023-06-06
  • JAVA音頻處理依賴庫(kù)示例操作大全(從格式轉(zhuǎn)換到音頻拼接)

    JAVA音頻處理依賴庫(kù)示例操作大全(從格式轉(zhuǎn)換到音頻拼接)

    在現(xiàn)代應(yīng)用開發(fā)中,音頻處理是常見需求,包括格式轉(zhuǎn)換、音頻拼接、剪輯、降噪等操作,本教程將介紹Spring?Boot中常用的音頻處理依賴庫(kù),比較它們的特性、區(qū)別及社區(qū)活躍程度,并提供實(shí)用代碼示例,感興趣的朋友跟隨小編一起看看吧
    2025-10-10
  • SpringBoot默認(rèn)日志logback輸出格式配置

    SpringBoot默認(rèn)日志logback輸出格式配置

    Springboot內(nèi)置使用了commons-logging日志門面,并內(nèi)置一個(gè)logback日志實(shí)現(xiàn),默認(rèn)輸出INFO級(jí)別,可以在application配置文件中修改logback的默認(rèn)配置,下面就來介紹一下,感興趣的可以了解一下
    2025-09-09
  • Springboot?中的?Filter?實(shí)現(xiàn)超大響應(yīng)?JSON?數(shù)據(jù)壓縮的方法

    Springboot?中的?Filter?實(shí)現(xiàn)超大響應(yīng)?JSON?數(shù)據(jù)壓縮的方法

    這篇文章主要介紹了Springboot?中的?Filter?實(shí)現(xiàn)超大響應(yīng)?JSON?數(shù)據(jù)壓縮,定義GzipFilter對(duì)輸出進(jìn)行攔截,定義 Controller該 Controller 非常簡(jiǎn)單,主要讀取一個(gè)大文本文件,作為輸出的內(nèi)容,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10

最新評(píng)論

黎平县| 察雅县| 耿马| 黄山市| 桂阳县| 酉阳| 黄浦区| 兴仁县| 河津市| 噶尔县| 铁岭市| 饶阳县| 兰西县| 株洲市| 南丹县| 高州市| 蓝山县| 巴东县| 崇仁县| 滁州市| 隆化县| 唐河县| 永清县| 琼中| 大冶市| 云南省| 建昌县| 灵山县| 白沙| 武川县| 兴化市| 岱山县| 大足县| 通道| 车致| 来安县| 余江县| 平湖市| 花莲市| 蒙山县| 江阴市|