溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Mybatis執(zhí)行多條語句/批量更新的方法是什么

發(fā)布時間:2023-03-31 11:45:36 來源:億速云 閱讀:122 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容主要講解“Mybatis執(zhí)行多條語句/批量更新的方法是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“Mybatis執(zhí)行多條語句/批量更新的方法是什么”吧!

    Mybatis執(zhí)行多條語句/批量更新

    Mybatis實現(xiàn)多條語句

    通常用在刪除主表信息同時刪除子表信息。

    如果利用多次Dao進行執(zhí)行sql,程序就寫起來麻煩并且閱讀難度會提升。

    (刪除income表中的信息,同時刪除子表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>

    這些語句的類似點在于都是在mybatis中帶有分號的多條sql。

    而直接執(zhí)行又會報錯,所以我們需要在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同時執(zhí)行多條語句

    有個常見的場景:刪除用戶的時候需要先刪除用戶的外鍵關(guān)聯(lián)數(shù)據(jù),否則會觸發(fā)規(guī)則報錯。

    解決辦法不外乎有三個

    • 1、多條sql分批執(zhí)行

    • 2、存儲過程或函數(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>

    到此,相信大家對“Mybatis執(zhí)行多條語句/批量更新的方法是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

    向AI問一下細節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI