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

Spring?Boot多數(shù)據(jù)源事務(wù)@DSTransactional的使用詳解

 更新時(shí)間:2023年06月09日 09:34:00   作者:可樂(lè)漢堡cola  
本文主要介紹了Spring?Boot多數(shù)據(jù)源事務(wù)@DSTransactional的使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

項(xiàng)目場(chǎng)景:

Spring Boot集成com.baomidou,引入dynamic-datasource依賴,實(shí)現(xiàn)多數(shù)據(jù)源,這里說(shuō)下事務(wù)問(wèn)題:

1、一個(gè)方法中使用同一個(gè)數(shù)據(jù)源;

2、一個(gè)方法中使用了多個(gè)數(shù)據(jù)源;

解決方案: 

這里把dao、service列出來(lái)

1、dao層

package com.test.mapper;
import com.baomidou.dynamic.datasource.annotation.DS;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
//數(shù)據(jù)源1
@DS("db1")
@Mapper
public interface Test1Dao {
    @Update("update test1 set name = #{name} where id = #{id}")
    void updateById(@Param("id")Integer id, @Param("name")String name);
}
package com.test.mapper;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.test.datasources.DataSourceNames;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
//數(shù)據(jù)源2
@DS(“db2”)
@Mapper
public interface Test2Dao {
    @Update("update test2 set name = #{name} where id = #{id}")
    void updateById(@Param("id")Integer id, @Param("name")String name);
}

2、service層 

package com.test.service;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
import com.test.mapper.Test1Dao;
import com.test.mapper.Test2Dao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
public class TestService {
    @Autowired
    private Test1Dao test1Dao;
    @Autowired
    private Test2Dao test2Dao;
    /**
     * 同一個(gè)數(shù)據(jù)源中的事務(wù),都是數(shù)據(jù)源2
     * 這里用的是spring的事務(wù)注解Transactional
     * 這里必須加上注解多數(shù)據(jù)源注解@DS("db2"),否則使用的是默認(rèn)數(shù)據(jù)源
     */
    @DS("db2")
    @Transactional
    public void theSame() {
        test2Dao.updateById(2,"第一次修改");
        test2Dao.updateById(2,"第二次修改");
        //這里報(bào)錯(cuò)回滾
        int i = 1/0;
    }
    /**
     * 多數(shù)據(jù)源中的事務(wù),同時(shí)使用數(shù)據(jù)源1、2
     * 如果這里用spring的事務(wù)注解Transactional,那么使用的是默認(rèn)數(shù)據(jù)源
     * 這里不需要加上注解@DS
     */
    @DSTransactional
    public void notAlike() {
        test1Dao.updateById(1,"第一次修改");
        test2Dao.updateById(2,"第二次修改");
        //這里報(bào)錯(cuò)回滾
        int i = 1/0;
    }
}

到此這篇關(guān)于Spring Boot多數(shù)據(jù)源事務(wù)@DSTransactional的使用詳解的文章就介紹到這了,更多相關(guān)SpringBoot @DSTransactional內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 容器環(huán)境的JVM內(nèi)存設(shè)置實(shí)踐記錄

    容器環(huán)境的JVM內(nèi)存設(shè)置實(shí)踐記錄

    Docker和K8S的興起,很多服務(wù)已經(jīng)運(yùn)行在容器環(huán)境,對(duì)于java程序,JVM設(shè)置是一個(gè)重要的環(huán)節(jié),這里總結(jié)下我們項(xiàng)目里的最佳實(shí)踐,對(duì)容器環(huán)境的JVM內(nèi)存相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-03-03
  • Java報(bào)錯(cuò):ClassCastException問(wèn)題解決方法

    Java報(bào)錯(cuò):ClassCastException問(wèn)題解決方法

    異常是程序中的一些錯(cuò)誤,但并不是所有的錯(cuò)誤都是異常,并且錯(cuò)誤有時(shí)候是可以避免的,下面這篇文章主要給大家介紹了關(guān)于Java報(bào)錯(cuò):ClassCastException問(wèn)題解決方法,需要的朋友可以參考下
    2024-07-07
  • SpringBoot整合MybatisPlus的基本應(yīng)用詳解

    SpringBoot整合MybatisPlus的基本應(yīng)用詳解

    MyBatis-Plus (簡(jiǎn)稱 MP)是一個(gè) MyBatis的增強(qiáng)工具,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為 簡(jiǎn)化開(kāi)發(fā)、提高效率而生,本文將給大家介紹一下SpringBoot整合MybatisPlus的基本應(yīng)用,需要的朋友可以參考下
    2024-05-05
  • JAVA設(shè)計(jì)模式---單例模式你知道嗎

    JAVA設(shè)計(jì)模式---單例模式你知道嗎

    這篇文章主要給大家介紹了關(guān)于Java單例模式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-09-09
  • java實(shí)現(xiàn)文件復(fù)制上傳操作

    java實(shí)現(xiàn)文件復(fù)制上傳操作

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)文件復(fù)制上傳操作,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • SpringBoot對(duì)接小程序微信支付的實(shí)現(xiàn)

    SpringBoot對(duì)接小程序微信支付的實(shí)現(xiàn)

    本文主要介紹了SpringBoot對(duì)接小程序微信支付的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧<BR>
    2023-09-09
  • Java數(shù)據(jù)結(jié)構(gòu)之鏈表詳解

    Java數(shù)據(jù)結(jié)構(gòu)之鏈表詳解

    本篇文章我們將講解一種新型的數(shù)據(jù)結(jié)構(gòu)—鏈表,鏈表是一種使用廣泛的通用數(shù)據(jù)結(jié)構(gòu),它可以用來(lái)作為實(shí)現(xiàn)棧,隊(duì)列等數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ).文中有非常詳細(xì)的介紹,需要的朋友可以參考下
    2021-05-05
  • Java多線程基礎(chǔ)

    Java多線程基礎(chǔ)

    這篇文章主要介紹Java多線程基礎(chǔ),線程是進(jìn)程的一個(gè)實(shí)體,是CPU調(diào)度和分派的基本單位,它是比進(jìn)程更小的能獨(dú)立運(yùn)行的基本單位,多線程指在單個(gè)程序中可以同時(shí)運(yùn)行多個(gè)不同的線程執(zhí)行不同的任務(wù),下面來(lái)學(xué)習(xí)具體的詳細(xì)內(nèi)容
    2021-10-10
  • springboot文件上傳時(shí)maxPostSize設(shè)置大小失效問(wèn)題及解決

    springboot文件上傳時(shí)maxPostSize設(shè)置大小失效問(wèn)題及解決

    這篇文章主要介紹了springboot文件上傳時(shí)maxPostSize設(shè)置大小失效問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Mybatis-Plus適配聯(lián)合主鍵實(shí)現(xiàn)方式

    Mybatis-Plus適配聯(lián)合主鍵實(shí)現(xiàn)方式

    本文介紹了如何使用Mybatis-Plus(MP)和Mybatis-Plus-Plus(MPP)工具來(lái)處理聯(lián)合主鍵的問(wèn)題,并詳細(xì)描述了整合過(guò)程、遇到的問(wèn)題及解決方式
    2025-11-11

最新評(píng)論

辽中县| 长宁县| 舞阳县| 于田县| 调兵山市| 松江区| 余姚市| 陈巴尔虎旗| 长葛市| 长葛市| 台中市| 仁寿县| 英山县| 渭南市| 那坡县| 德化县| 乌审旗| 虞城县| 美姑县| 库伦旗| 金溪县| 墨竹工卡县| 神农架林区| 阿巴嘎旗| 泸溪县| 射洪县| 清镇市| 白河县| 福建省| 绥棱县| 隆化县| 公主岭市| 临安市| 南丰县| 兴城市| 孟村| 县级市| 临西县| 海原县| 水城县| 都安|