亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Mybatis的update更新批量與普通解決方式對比

 更新時間:2022年04月27日 17:11:33   作者:Hi梅  
這篇文章主要為大家介紹了Mybatis的update更新批量與普通解決方式對比,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

需求前提:

通過其他庫里面查詢出一條數(shù)據(jù),并且對另外一個庫中的oederId進(jìn)行更新里面的內(nèi)容
注意:使用批量update時連接數(shù)據(jù)庫的語句需要添加allowMultiQueries=true

jdbc:mysql://127.0.0.1:3306/tb?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8&useSSL=false&allowMultiQueries=true

1.第一種:應(yīng)該是效率最低的更新

查詢出來直接進(jìn)行update修改語句

2.通過批量更新

通過查詢匹配存在表里面的數(shù)據(jù),就把需要更新的數(shù)據(jù)添加到一個集合中去,在xml使用foreach來更新數(shù)據(jù),如果需要插入的數(shù)據(jù)太長可能存在一些問題,那我們我們把需要插入的集合進(jìn)行分批插入,這樣也不至于update語句連起來太長了

通過subList方法來截取插入的數(shù)量,我們按照500條進(jìn)行分批插入.

使用該方法必須使用左父右子的形式才能使用父類的方法.

List< T > uptbDtos=new ArrayList<>();

xml改造

    <update id="updateOrderXqlDatas">
        <foreach collection="list" index="index" item="item" separator=";" open="" close="">
            UPDATE tb_taobao_order
            <set>
                <if test="item.wxid != null"> wxid  = #{item.wxid},</if>
                <if test="item.wxname != null"> wxname  = #{item.wxname}</if>
            </set>
            WHERE
            TRADE_ID = #{item.tradeid,jdbcType=VARCHAR}
        </foreach>

    </update>

輸出的sql語句:

update tb_taobao_order set wxid='1' ,wxname='哈哈哈' 
where TRADE_ID='5456&#39;;update tb_taobao_order set wxid='2' ,wxname='哈哈哈2' 
where TRADE_ID='5458';

會以這種形式拼接起來然后在一起運行!和第一種的區(qū)別在于,第一種是單條update的運行提交!

注意事項:使用set導(dǎo)致逗號出現(xiàn)的問題

如果修改多個值的時候使用需要使用逗號分隔,都是會有一種情況如果對象的值是null那么使用if標(biāo)簽的值就不會會被插入,這樣就會出現(xiàn)一個問題,如果對象里面的wxname是null那么插入的語句會變成:update tb_taobao_order set wxid='1' , where TRADE_ID='5456';你會發(fā)現(xiàn)wxid=‘1’ 后面跟著一個逗號這樣的sql肯定會報錯的!**

解決這一個問題:我們把set標(biāo)簽更改掉換成trim標(biāo)簽

  <foreach collection="list" index="index" item="item" separator=";" open="" close="">
            UPDATE tb_taobao_order
            <trim prefix="set" suffixOverrides=",">
                <if test="item.wxid != null"> wxid  = #{item.wxid},</if>
                <if test="item.wxname != null"> wxname  = #{item.wxname}</if>
            </trim>
            WHERE
            TRADE_ID = #{item.tradeid,jdbcType=VARCHAR}
</foreach>

< trim>節(jié)點標(biāo)簽解讀:

屬性:

prefix:trim包含的內(nèi)容前加上某些前綴

suffix:trim包含的內(nèi)容后面添加后綴

prefixOverrides:內(nèi)容首部的某些內(nèi)容去掉

suffixOverrides:內(nèi)容的尾部的某些內(nèi)容去掉

好了修改好后,運行程序開始同步數(shù)據(jù)

同步時間從原來的1020秒變成現(xiàn)在的16秒速度提升多少呀

沒有進(jìn)行批量更新的時間!

以上就是Mybatis的update更新批量與普通解決方式對比的詳細(xì)內(nèi)容,更多關(guān)于Mybatis update更新批量普通對比的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 一文了解Java中record和lombok的使用對比

    一文了解Java中record和lombok的使用對比

    Java的 record 關(guān)鍵字是Java 14中引入的一個新的語義特性。Lombok 是一個Java庫,可以自動生成一些已知的模式為Java字節(jié)碼。本文我們將探討各種使用情況,包括java record 的一些限制。對于每個例子,我們將看到Lombok如何派上用場,并比較這兩種解決方案
    2022-07-07
  • Java根據(jù)身份證號計算年齡,15位身份證號碼轉(zhuǎn)18位原理與操作示例

    Java根據(jù)身份證號計算年齡,15位身份證號碼轉(zhuǎn)18位原理與操作示例

    這篇文章主要介紹了Java根據(jù)身份證號計算年齡,15位身份證號碼轉(zhuǎn)18位原理與操作,結(jié)合實例形式詳細(xì)分析了構(gòu)成身份證號碼的各個位的含義,15位身份證號碼轉(zhuǎn)18位的方法及Java根據(jù)身份證號計算年齡相關(guān)操作技巧,需要的朋友可以參考下
    2019-10-10
  • SpringBoot中自定義首頁(默認(rèn)頁)及favicon的方法

    SpringBoot中自定義首頁(默認(rèn)頁)及favicon的方法

    這篇文章主要介紹了SpringBoot中如何自定義首頁(默認(rèn)頁)及favicon,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • Spring AOP訪問目標(biāo)方法的參數(shù)操作示例

    Spring AOP訪問目標(biāo)方法的參數(shù)操作示例

    這篇文章主要介紹了Spring AOP訪問目標(biāo)方法的參數(shù)操作,結(jié)合實例形式詳細(xì)分析了spring面向切面AOP訪問目標(biāo)方法的參數(shù)相關(guān)實現(xiàn)步驟與操作注意事項,需要的朋友可以參考下
    2020-01-01
  • Logback動態(tài)修改日志級別的方法

    Logback動態(tài)修改日志級別的方法

    這篇文章主要介紹了Logback動態(tài)修改日志級別的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • SpringBoot2零基礎(chǔ)到精通之異常處理與web原生組件注入

    SpringBoot2零基礎(chǔ)到精通之異常處理與web原生組件注入

    SpringBoot是Spring全家桶的成員之一,基于約定優(yōu)于配置的思想(即有約定默認(rèn)值,在不配置的情況下會使用默認(rèn)值,在配置文件下配置的話會使用配置的值)。SpringBoot是一種整合Spring技術(shù)棧的方式(或者說是框架),同時也是簡化Spring的一種快速開發(fā)的腳手架
    2022-03-03
  • 基于SpringBoot+Redis的Session共享與單點登錄詳解

    基于SpringBoot+Redis的Session共享與單點登錄詳解

    這篇文章主要介紹了基于SpringBoot+Redis的Session共享與單點登錄,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • Java創(chuàng)建文件夾及文件實例代碼

    Java創(chuàng)建文件夾及文件實例代碼

    Java創(chuàng)建文件夾及文件實例代碼,需要的朋友可以參考一下
    2013-04-04
  • java8 stream 由一個list轉(zhuǎn)化成另一個list案例

    java8 stream 由一個list轉(zhuǎn)化成另一個list案例

    這篇文章主要介紹了java8 stream 由一個list轉(zhuǎn)化成另一個list案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Java中創(chuàng)建對象的5種方式總結(jié)

    Java中創(chuàng)建對象的5種方式總結(jié)

    本篇文章主要介紹了Java中創(chuàng)建對象的5種方式總結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02

最新評論