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

MyBatis如何配置多sql腳本執(zhí)行

 更新時間:2023年03月31日 09:26:30   作者:今夜無風(fēng)亦無雨  
這篇文章主要介紹了MyBatis如何配置多sql腳本執(zhí)行問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

MyBatis配置多sql腳本執(zhí)行

在實(shí)際開發(fā)場景中,有時候?yàn)榱藴p少代碼的冗余,在編寫數(shù)據(jù)執(zhí)行方法時,希望一個方法同時執(zhí)行兩個sql腳本,順序執(zhí)行,不影響業(yè)務(wù)邏輯。

1、在數(shù)據(jù)源配置中增加如下配置:allowMultiQueries=true

spring:
? profiles: dev
? datasource:
? ? #主數(shù)據(jù)源
? ? master:
? ? ? type: com.alibaba.druid.pool.DruidDataSource
? ? ? driver-class-name: com.mysql.jdbc.Driver
? ? ? url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&useSSL=false&serverTimezone=UTC&allowMultiQueries=true
? ? ? username: root
? ? ? password: 123456

2、多sql語句以分號;相隔

<update id="updateId" parameterType="java.lang.Integer">
? ? ? ? update t_menu set name = #{name} where id = #{id};
? ? ? ? update t_stu set order_no = order_no+1 where id = #{id};
</update>

注意:多條sql語句同時執(zhí)行,不存在事務(wù),即其中一條sql語句報錯不會影響另外一條語句執(zhí)行。

解決辦法:

在service層方法里添加@Transactional注解,添加@Transactional注解后,spring默認(rèn)拋出未檢查unchecked異常(繼承自RuntimeException的異常)或者Error才會回滾,換句話說,若只是添加@Transactional注解,對于RuntimeException異常或者Error錯誤默認(rèn)會觸發(fā)事務(wù)回滾,對于其他的異常是不會觸發(fā)異常的,若此時想要其他異常也能觸發(fā)回滾,需要添加@Transactional的rollbackFor屬性值,比如在代碼中手動拋出Exception異常

如下:

if (res > 0) {
? ? ? // 拋出異常,事物捕抓異常,事物進(jìn)行回滾
? ? ? throw new Exception("無權(quán)限審批!");
}

此時加上rollbackFor屬性值如下,當(dāng)出現(xiàn)Exception異常時,可以觸發(fā)事務(wù)回滾。 

@Transactional(rollbackFor = Exception.class)

建議:自定義一個異常處理類,該異常類繼承RuntimeException類,在需要拋出異常時,調(diào)用該自定義異常類,此時方法執(zhí)行出現(xiàn)異常,會拋出RuntimeException,在方法頭加上@Transactional即可,而不需要添加rollbackFor屬性值。

MyBatis一次執(zhí)行多條sql,一個標(biāo)簽多個Insert、update、delete

再平時的工作、學(xué)習(xí)中,我們會遇見插入,修改,刪除多個表的操作,我們不可能寫多條insert標(biāo)簽等,這就需要在一個標(biāo)簽中寫多個SQL語句

? <insert id="addPurchase" parameterType="com.zhao.vo.PurchaseVoOne">
? ? ? ? insert into enters_sells_saves.purchase ( amount, price, purchase_time)
? ? ? ? values (#{amount},#{price},#{purchaseTime});
? ? ? ? insert into enters_sells_saves.goods (goods_name)
? ? ? ? values (#{goodsName});
? ? ? ? insert into enters_sells_saves.supplier (supplier_name)
? ? ? ? values (#{supplierName});
? ? </insert>

需要我們在數(shù)據(jù)庫連接配置中加入:

allowMultiQueries=true

如:

jdbc:mysql://localhost:3306/enters_sells_saves?useSSL=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT&allowMultiQueries=true

這樣就可以在一個標(biāo)簽中使用多個sql語句了

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • spring中@ControllerAdvice 注解的使用

    spring中@ControllerAdvice 注解的使用

    @ControllerAdvice注解是Spring3.2中新增的注解,主要用于Controller的全局配置,本文就來介紹一下spring中@ControllerAdvice 注解的使用,感興趣的可以了解一下
    2024-09-09
  • Java?NIO?通道概念選擇器使用示例詳解

    Java?NIO?通道概念選擇器使用示例詳解

    這篇文章主要為大家介紹了Java?NIO?通道概念選擇器使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Spring無法接收List<event>的解決方案

    Spring無法接收List<event>的解決方案

    在日常開發(fā)中,我們常使用 Spring 的 @EventListener 注解來監(jiān)聽事件,但在處理 批量事件 時,卻可能遇到一些“看似合理但無法生效”的監(jiān)聽方式,本文以實(shí)際具體案例為出發(fā)點(diǎn),結(jié)合源碼分析事件派發(fā)邏輯,并給出兩種可行解決方案,需要的朋友可以參考下
    2025-04-04
  • Java實(shí)現(xiàn)求解一元n次多項(xiàng)式的方法示例

    Java實(shí)現(xiàn)求解一元n次多項(xiàng)式的方法示例

    這篇文章主要介紹了Java實(shí)現(xiàn)求解一元n次多項(xiàng)式的方法,涉及java高斯消元法處理矩陣運(yùn)算解多項(xiàng)式的相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • SpringBoot使用Flyway進(jìn)行數(shù)據(jù)庫遷移的實(shí)現(xiàn)示例

    SpringBoot使用Flyway進(jìn)行數(shù)據(jù)庫遷移的實(shí)現(xiàn)示例

    Flyway是一個數(shù)據(jù)庫遷移工具,它提供遷移歷史和回滾的功能,本文主要介紹了如何使用Flyway來管理Spring Boot應(yīng)用程序中的SQL數(shù)據(jù)庫架構(gòu),感興趣的可以了解一下
    2023-08-08
  • Java-IO流實(shí)驗(yàn)

    Java-IO流實(shí)驗(yàn)

    流是一種抽象概念,它代表了數(shù)據(jù)的無結(jié)構(gòu)化傳遞。。用來進(jìn)行輸入輸出操作的流就稱為IO流。換句話說,IO流就是以流的方式進(jìn)行輸入輸出,希望能給您帶來幫助
    2021-06-06
  • Spring的CorsFilter會失效的原因及解決方法

    Spring的CorsFilter會失效的原因及解決方法

    眾所周知CorsFilter是Spring提供的跨域過濾器,我們可能會做以下的配置,基本上就是允許任何跨域請求,我利用Spring的CorsFilter做跨域操作但是出現(xiàn)報錯,接下來小編就給大家介紹一Spring的CorsFilter會失效的原因及解決方法,需要的朋友可以參考下
    2023-09-09
  • Java+MySQL實(shí)現(xiàn)設(shè)計優(yōu)惠券系統(tǒng)

    Java+MySQL實(shí)現(xiàn)設(shè)計優(yōu)惠券系統(tǒng)

    這篇文章主要介紹了Java+MySQL實(shí)現(xiàn)設(shè)計優(yōu)惠券系統(tǒng),文章基于Java與MySQL的相關(guān)資料展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • java8學(xué)習(xí)教程之lambda表達(dá)式的使用方法

    java8學(xué)習(xí)教程之lambda表達(dá)式的使用方法

    Java8最值得學(xué)習(xí)的特性就是Lambda表達(dá)式,下面這篇文章主要給大家介紹了關(guān)于java8學(xué)習(xí)教程之lambda表達(dá)式使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • java讀取解析xml文件實(shí)例

    java讀取解析xml文件實(shí)例

    這篇文章主要介紹了java讀取解析xml文件實(shí)例,本文創(chuàng)建了一個XML解析類同時講解了循環(huán)節(jié)點(diǎn)輸出方式,需要的朋友可以參考下
    2015-03-03

最新評論

德格县| 平泉县| 丹凤县| 辽阳市| 兰溪市| 内黄县| 莱州市| 邵武市| 莲花县| 泗洪县| 五原县| 夏河县| 玛沁县| 密云县| 邳州市| 南投市| 丹凤县| 新乡市| 旅游| 永济市| 鸡泽县| 喀什市| 南开区| 常宁市| 大庆市| 山阳县| 湘乡市| 晋中市| 新田县| 伊金霍洛旗| 揭阳市| 灵川县| 宁津县| 当阳市| 五莲县| 吴江市| 揭东县| 阿克陶县| 昌都县| 本溪市| 长沙市|