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

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

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

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

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

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í)行,不存在事務,即其中一條sql語句報錯不會影響另外一條語句執(zhí)行。

解決辦法:

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

如下:

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

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

@Transactional(rollbackFor = Exception.class)

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

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

再平時的工作、學習中,我們會遇見插入,修改,刪除多個表的操作,我們不可能寫多條insert標簽等,這就需要在一個標簽中寫多個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

這樣就可以在一個標簽中使用多個sql語句了

總結(jié)

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

相關文章

  • spring中@ControllerAdvice 注解的使用

    spring中@ControllerAdvice 注解的使用

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

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

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

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

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

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

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

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

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

    Java-IO流實驗

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

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

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

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

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

    java8學習教程之lambda表達式的使用方法

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

    java讀取解析xml文件實例

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

最新評論

潞西市| 泰兴市| 洛阳市| 丹阳市| 沅陵县| 永善县| 晋州市| 阿拉善右旗| 忻州市| 全椒县| 永年县| 东港市| 舟山市| 沈丘县| 大方县| 象山县| 德安县| 宿州市| 东乡族自治县| 墨竹工卡县| 麦盖提县| 水富县| 聊城市| 贵州省| 诸城市| 合江县| 宣化县| 霍州市| 竹山县| 蒙城县| 册亨县| 平度市| 广河县| 景洪市| 准格尔旗| 互助| 眉山市| 沙湾县| 龙门县| 梅河口市| 通城县|