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

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

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

需求前提:

通過(guò)其他庫(kù)里面查詢(xún)出一條數(shù)據(jù),并且對(duì)另外一個(gè)庫(kù)中的oederId進(jìn)行更新里面的內(nèi)容
注意:使用批量update時(shí)連接數(shù)據(jù)庫(kù)的語(yǔ)句需要添加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)該是效率最低的更新

查詢(xún)出來(lái)直接進(jìn)行update修改語(yǔ)句

2.通過(guò)批量更新

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

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

使用該方法必須使用左父右子的形式才能使用父類(lèi)的方法.

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語(yǔ)句:

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';

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

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

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

解決這一個(gè)問(wèn)題:我們把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é)點(diǎn)標(biāo)簽解讀:

屬性:

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

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

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

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

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

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

沒(méi)有進(jìn)行批量更新的時(shí)間!

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

相關(guān)文章

  • Java線(xiàn)程本地變量導(dǎo)致的緩存問(wèn)題解決方法

    Java線(xiàn)程本地變量導(dǎo)致的緩存問(wèn)題解決方法

    使用緩存可以緩解大流量壓力,顯著提高程序的性能,我們?cè)谑褂镁彺嫦到y(tǒng)時(shí),尤其是大并發(fā)情況下,經(jīng)常會(huì)遇到一些疑難雜癥,這篇文章主要給大家介紹了關(guān)于Java線(xiàn)程本地變量導(dǎo)致的緩存問(wèn)題的解決方法,需要的朋友可以參考下,
    2024-08-08
  • JDK序列化Bug難題解決示例詳解

    JDK序列化Bug難題解決示例詳解

    這篇文章主要為大家介紹了JDK序列化Bug難題解決示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Java中判斷集合是否相等的幾種方法詳解

    Java中判斷集合是否相等的幾種方法詳解

    這篇文章主要介紹了Java中判斷集合是否相等的幾種方法詳解,在平時(shí)的開(kāi)發(fā)中,可能會(huì)遇到需要判斷兩個(gè)集合是否相等的需求,那么本文就來(lái)詳細(xì)講解一下幾種實(shí)現(xiàn)方法,需要的朋友可以參考下
    2023-08-08
  • SpringBoot讀取resource目錄下文件失敗的原因及解決方案

    SpringBoot讀取resource目錄下文件失敗的原因及解決方案

    在idea中運(yùn)行時(shí),有些resource下文件讀取工具類(lèi)能夠正常獲取讀取到文件,但是通過(guò)java–jar的方式去運(yùn)行jar包,此時(shí)resource下文件讀取工具類(lèi)讀取文件就失效了,本文就給大家介紹一下SpringBoot讀取resource目錄下文件失敗解決方案,需要的朋友可以參考下
    2023-08-08
  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(4)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(4)

    下面小編就為大家?guī)?lái)一篇Java基礎(chǔ)的幾道練習(xí)題(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望可以幫到你
    2021-07-07
  • java編譯器的基礎(chǔ)知識(shí)點(diǎn)

    java編譯器的基礎(chǔ)知識(shí)點(diǎn)

    在本篇文章里小編給大家整理的是一篇關(guān)于java編譯器的基礎(chǔ)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們可以閱讀下。
    2020-02-02
  • Jmeter如何基于命令行運(yùn)行jmx腳本

    Jmeter如何基于命令行運(yùn)行jmx腳本

    這篇文章主要介紹了Jmeter如何基于命令行運(yùn)行jmx腳本,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Java訪(fǎng)問(wèn)者設(shè)計(jì)模式詳細(xì)講解

    Java訪(fǎng)問(wèn)者設(shè)計(jì)模式詳細(xì)講解

    大多數(shù)情況下你不需要訪(fǎng)問(wèn)者模式,但當(dāng)一旦需要訪(fǎng)問(wèn)者模式時(shí),那就是真的需要它了,這是設(shè)計(jì)模式創(chuàng)始人的原話(huà)??梢钥闯鰬?yīng)用場(chǎng)景比較少,但需要它的時(shí)候是不可或缺的,這篇文章就開(kāi)始學(xué)習(xí)最后一個(gè)設(shè)計(jì)模式——訪(fǎng)問(wèn)者模式
    2022-11-11
  • Java實(shí)現(xiàn)多線(xiàn)程下載和斷點(diǎn)續(xù)傳

    Java實(shí)現(xiàn)多線(xiàn)程下載和斷點(diǎn)續(xù)傳

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)多線(xiàn)程下載和斷點(diǎn)續(xù)傳,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • ShardingSphere解析SQL示例詳解

    ShardingSphere解析SQL示例詳解

    這篇文章主要為大家介紹了ShardingSphere解析SQL的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08

最新評(píng)論

柳河县| 徐汇区| 右玉县| 山东省| 吉木萨尔县| 芜湖县| 万年县| 紫金县| 六枝特区| 乌兰浩特市| 固始县| 武夷山市| 双峰县| 丹阳市| 娱乐| 永新县| 阳城县| 城市| 沐川县| 台中市| 阜平县| 金坛市| 山东省| 蒙阴县| 巢湖市| 德兴市| 新乡县| 象州县| 贺州市| 资兴市| 长沙市| 天峨县| 青岛市| 盐城市| 苏尼特左旗| 阜南县| 万源市| 靖西县| 特克斯县| 皮山县| 都江堰市|