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

Mybatis批處理、Mysql深分頁操作

 更新時間:2023年08月09日 10:10:01   作者:Jun South  
這篇文章主要介紹了Mybatis批處理、Mysql深分頁操作,Mybatis批量操作包括Foreach方式和ExecutorType.BATCH插入操作,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

一、Mybatis批量操作

1、Foreach方式

會拼接成:insert into table (ID, PHONE,MESSAGE) values (?,?,?), (?,?,?), (?,?,?)當(dāng)數(shù)據(jù)過多時,可能生成的動態(tài)sql過大,mysql默認(rèn)僅1M的sql字符串,過長可能會執(zhí)行失敗。在sql循環(huán)時設(shè)置batch與否其實執(zhí)行時間差別不是很大,所以其實如果不是特別要求性能,可直接在sql中使用for循環(huán)即可。實踐發(fā)現(xiàn),當(dāng)表的列數(shù)較多(超過20),以及一次性插入的行數(shù)較多(上萬條)時,插入性能非常差,通常需要20分鐘以上

<insert id="saveBatch" parameterType="java.util.List">
    insert into mytable (id, name, sex, age) values
    <foreach collection="list" item="item" separator=",">
        (#{item.id}, #{item.name}, #{item.sex}, #{item.age})
    </foreach>
</insert>

2、ExecutorType.BATCH插入

Mybatis內(nèi)置的ExecutorType有3種,SIMPLE、REUSE、BATCH;默認(rèn)的是simple,該模式下它為每個語句的執(zhí)行創(chuàng)建一個新的預(yù)處理語句,單條提交sql;batch模式重復(fù)使用已經(jīng)預(yù)處理的語句,且批量執(zhí)行所有更新語句,但batch模式也有自己的問題,在Insert操作時,沒提交事務(wù)前,無法獲取到自增的id。

public enum ExecutorType {
  SIMPLE, //mybatis的默認(rèn)執(zhí)行器,它為每個語句的執(zhí)行創(chuàng)建一個新的預(yù)處理語句
  REUSE,  //會復(fù)用預(yù)處理語句
  BATCH   //會批量執(zhí)行所有更新語句,不需要對同樣的SQL進行多次預(yù)編譯 ArticleCategory
}
public void saveBatch(List list) {
  SqlSession sqlSession = sqlSessionTemplate.getSqlSessionFactory().openSession(ExecutorType.BATCH, false);
    try {
        MyMapper mapper = sqlSession.getMapper(MyMapper.class);
        mapper.saveBatch(list);
        sqlSession.commit();
        sqlSession.clearCache();
    } catch (Exception e) {
        sqlSession.rollback();
        e.printStackTrace();
    } finally {
        sqlSession.close();
    }
}

二、Mysql深分頁

1、普通分頁

select * from table order by id limit m,n;

2、先查出主鍵,通過主鍵關(guān)聯(lián),支持跨頁,減少回表。

select * from table as a
inner join (select id from table order by id limit m, n) as b
on a.id = b.id order by a.id;

3、取上一頁最大主鍵做判斷,不支持跨頁插敘。

select * from table where id > #max_id# order by id limit 10, 10;

4、先查出主鍵,通過主鍵做范圍判斷,支持跨頁,減少回表。

select * from table where id > (select id from table order by id limit m, 1) limit n;

到此這篇關(guān)于Mybatis批處理、Mysql深分頁操作的文章就介紹到這了,更多相關(guān)Mybatis批處理、Mysql深分頁內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springBoot集成shiro實現(xiàn)權(quán)限刷新

    springBoot集成shiro實現(xiàn)權(quán)限刷新

    在SpringBoot項目中集成Shiro進行權(quán)限管理,包括基礎(chǔ)配置引入依賴、創(chuàng)建Shiro配置類以及用戶認(rèn)證與授權(quán)實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-11-11
  • Java接口異步調(diào)用優(yōu)化技巧詳解

    Java接口異步調(diào)用優(yōu)化技巧詳解

    本文詳細介紹了在Java開發(fā)中,如何通過異步調(diào)用等技巧來優(yōu)化接口的性能,有效避免阻塞和提高并發(fā)處理能力,提升系統(tǒng)的穩(wěn)定性和響應(yīng)速度
    2023-05-05
  • Java令牌Token登錄與退出的實現(xiàn)

    Java令牌Token登錄與退出的實現(xiàn)

    這篇文章主要介紹了Java令牌Token登錄與退出的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • SpringBoot集成MinIO實現(xiàn)分布式文件存儲與管理方式

    SpringBoot集成MinIO實現(xiàn)分布式文件存儲與管理方式

    這篇文章主要介紹了SpringBoot集成MinIO實現(xiàn)分布式文件存儲與管理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-09-09
  • Java客戶端通過HTTPS連接到Easysearch實現(xiàn)過程

    Java客戶端通過HTTPS連接到Easysearch實現(xiàn)過程

    這篇文章主要為大家介紹了Java客戶端通過HTTPS連接到Easysearch實現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • Java實現(xiàn)順序棧原理解析

    Java實現(xiàn)順序棧原理解析

    這篇文章主要介紹了Java實現(xiàn)順序棧原理解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • JDK8中新增的原子性操作類LongAdder詳解

    JDK8中新增的原子性操作類LongAdder詳解

    這篇文章主要給大家介紹了關(guān)于JDK8中新增的原子性操作類LongAdder的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-08-08
  • SpringSecurity自動登錄流程與實現(xiàn)詳解

    SpringSecurity自動登錄流程與實現(xiàn)詳解

    這篇文章主要介紹了SpringSecurity自動登錄流程與實現(xiàn)詳解,所謂的自動登錄是在訪問鏈接時瀏覽器自動攜帶上了Cookie中的Token交給后端校驗,如果刪掉了Cookie或者過期了同樣是需要再次驗證的,需要的朋友可以參考下
    2024-01-01
  • Java中l(wèi)ist集合的clear方法及空字符串的區(qū)別

    Java中l(wèi)ist集合的clear方法及空字符串的區(qū)別

    這篇文章主要介紹了Java中l(wèi)ist集合的clear方法及空字符串的區(qū)別,在使用list?結(jié)合的時候習(xí)慣了?list=null?;在創(chuàng)建這樣的方式,但是發(fā)現(xiàn)使用list的clear?方法很不錯,尤其是有大量循環(huán)的時候<BR>list.clear()與list?=?null?區(qū)別,需要的朋友可以參考下
    2023-08-08
  • SpringBoot整合XxlJob分布式任務(wù)調(diào)度平臺

    SpringBoot整合XxlJob分布式任務(wù)調(diào)度平臺

    xxl-job是一個開源的分布式定時任務(wù)框架,它可以與其他微服務(wù)組件一起構(gòu)成微服務(wù)集群。它的調(diào)度中心(xxl-job)和執(zhí)行器(自己的springboot項目中有@XxlJob("定時任務(wù)名稱")的方法)是相互分離,分開部署的,兩者通過HTTP協(xié)議進行通信
    2023-02-02

最新評論

女性| 汉中市| 恭城| 登封市| 陇南市| 彰化市| 夏河县| 屏山县| 建阳市| 舞钢市| 军事| 中江县| 绿春县| 海口市| 望谟县| 米易县| 三明市| 定襄县| 蓝山县| 潮安县| 济源市| 威信县| 银川市| 喜德县| 休宁县| 水富县| 新平| 阿拉善盟| 彰化县| 武冈市| 龙游县| 庆阳市| 罗源县| 东阳市| 工布江达县| 姜堰市| 原阳县| 宝兴县| 突泉县| 苍梧县| 剑阁县|