Mybatis執(zhí)行多條語句/批量更新方式
Mybatis執(zhí)行多條語句/批量更新
Mybatis實(shí)現(xiàn)多條語句
通常用在刪除主表信息同時(shí)刪除子表信息。
如果利用多次Dao進(jìn)行執(zhí)行sql,程序就寫起來麻煩并且閱讀難度會(huì)提升。
(刪除income表中的信息,同時(shí)刪除子表income_detail表中的相關(guān)信息)
delete from income_detail where income_id=#{id};? delete from income where id=#{id};
或者是批量更新,比如利用foreach批量update多條數(shù)據(jù)。
<update id="update"> ? ? <foreach collection="xxList" item="item" index="index" open="" close="" separator=";"> ? ? ? update t_xxx ? ? ? <set> ? ? ? ? xxx = #{item.xxx} ? ? ? </set> ? ? ? where id = #{item.id} ? ? </foreach> </update>
這些語句的類似點(diǎn)在于都是在mybatis中帶有分號(hào)的多條sql。
而直接執(zhí)行又會(huì)報(bào)錯(cuò),所以我們需要在jdbc連接中加上allowMultiQueries參數(shù),設(shè)置為true。
<property name="url" value="jdbc:mysql://localhost:3306/amoeba?characterEncoding=UTF-8&allowMultiQueries=true"/>
jdbc.url=jdbc:mysql://localhost:3306/amoeba?characterEncoding=UTF-8&allowMultiQueries=true
Mybatis同時(shí)執(zhí)行多條語句
有個(gè)常見的場(chǎng)景:刪除用戶的時(shí)候需要先刪除用戶的外鍵關(guān)聯(lián)數(shù)據(jù),否則會(huì)觸發(fā)規(guī)則報(bào)錯(cuò)。
解決辦法不外乎有三個(gè)
- 1、多條sql分批執(zhí)行
- 2、存儲(chǔ)過程或函數(shù)調(diào)用
- 3、sql批量執(zhí)行
今天我要說的是MyBatis中如何一次執(zhí)行多條語句(使用mysql數(shù)據(jù)庫)。
1、修改數(shù)據(jù)庫連接參數(shù)加上allowMultiQueries=true,如:
hikariConfig.security.jdbcUrl=jdbc:mysql://xx.xx.xx:3306/xxxxx?characterEncoding=utf-8&autoReconnect=true&failOverReadOnly=false&allowMultiQueries=true
2、直接寫多條語句,用“;”隔開即可
<delete id="deleteUserById" parameterType="String"> ? ? delete from sec_user_role where userId=#{id}; ? ? delete from sec_user where id=#{id}; </delete>
僅此而已?。?!
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring?Boot中KafkaListener的介紹、原理和使用方法案例詳解
本文介紹了Spring Boot中 @KafkaListener 注解的介紹、原理和使用方法,通過本文的介紹,我們希望讀者能夠更好地理解Spring Boot中 @KafkaListener 注解的使用方法,并在項(xiàng)目中更加靈活地應(yīng)用2023-09-09Java異常詳解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
異常是Java語言中的一部分,它代表程序中由各種原因引起的“不正?!币蛩?。下面通過本文給大家介紹java異常的相關(guān)知識(shí),感興趣的朋友一起看看吧2017-06-06詳細(xì)解讀AbstractStringBuilder類源碼
這篇文章主要介紹了詳細(xì)解讀AbstractStringBuilder類源碼,具有一定參考價(jià)值,需要的朋友可以了解下。2017-12-12基于Spring5實(shí)現(xiàn)登錄注冊(cè)功能
這篇文章主要為大家詳細(xì)介紹了基于Spring5實(shí)現(xiàn)登錄注冊(cè)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09基于java計(jì)算買賣股票的最佳時(shí)機(jī)
這篇文章主要介紹了基于java計(jì)算買賣股票的最佳時(shí)機(jī),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10springboot如何為web層添加統(tǒng)一請(qǐng)求前綴
這篇文章主要介紹了springboot如何為web層添加統(tǒng)一請(qǐng)求前綴,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02