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

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

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

項目場景:

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

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

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

解決方案: 

這里把dao、service列出來

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;
    /**
     * 同一個數(shù)據(jù)源中的事務,都是數(shù)據(jù)源2
     * 這里用的是spring的事務注解Transactional
     * 這里必須加上注解多數(shù)據(jù)源注解@DS("db2"),否則使用的是默認數(shù)據(jù)源
     */
    @DS("db2")
    @Transactional
    public void theSame() {
        test2Dao.updateById(2,"第一次修改");
        test2Dao.updateById(2,"第二次修改");
        //這里報錯回滾
        int i = 1/0;
    }
    /**
     * 多數(shù)據(jù)源中的事務,同時使用數(shù)據(jù)源1、2
     * 如果這里用spring的事務注解Transactional,那么使用的是默認數(shù)據(jù)源
     * 這里不需要加上注解@DS
     */
    @DSTransactional
    public void notAlike() {
        test1Dao.updateById(1,"第一次修改");
        test2Dao.updateById(2,"第二次修改");
        //這里報錯回滾
        int i = 1/0;
    }
}

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

相關文章

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

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

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

    Java報錯:ClassCastException問題解決方法

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

    SpringBoot整合MybatisPlus的基本應用詳解

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

    JAVA設計模式---單例模式你知道嗎

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

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

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

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

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

    Java數(shù)據(jù)結構之鏈表詳解

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

    Java多線程基礎

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

    springboot文件上傳時maxPostSize設置大小失效問題及解決

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

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

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

最新評論

泰宁县| 尚义县| 泗洪县| 聂拉木县| 全南县| 繁峙县| 图木舒克市| 申扎县| 温宿县| 合山市| 寻乌县| 柳江县| 青州市| 盐池县| 延津县| 阜宁县| 治县。| 黄大仙区| 岳池县| 临海市| 台南县| 平江县| 边坝县| 镇康县| 汉源县| 郑州市| 普定县| 青川县| 长垣县| 北海市| 恩施市| 大竹县| 新巴尔虎左旗| 灯塔市| 手游| 于都县| 九台市| 雷波县| 无锡市| 塔城市| 涡阳县|