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

Mybatis兩種不同批量插入方式的區(qū)別

 更新時間:2021年09月15日 09:10:11   作者:_沸羊羊_  
隨著業(yè)務(wù)需要,有時我們需要將數(shù)據(jù)批量添加到數(shù)據(jù)庫,mybatis提供了將list集合循環(huán)添加到數(shù)據(jù)庫的方法,這篇文章主要給大家介紹了關(guān)于Mybatis兩種不同批量插入方式的區(qū)別,需要的朋友可以參考下

前言

本文使用 Mybatis 進(jìn)行批量插入,比較兩種不同的插入方式的區(qū)別。

測試

批量插入注意事項(xiàng):

1、連接數(shù)據(jù)庫時添加參數(shù) allowMultiQueries=true,支持多語句執(zhí)行,批處理

2、數(shù)據(jù)庫是否支持大量數(shù)據(jù)寫入,設(shè)置 max_allowed_packet參數(shù)保證批次提交的數(shù)據(jù)量

拼接 sql

public void batchDemo() {
        long start = System.currentTimeMillis();
        List<User> list = new ArrayList<>();
        for (int i = 0; i < 5000; i++) {
            User user = new User();
            user.setId(UUID.randomUUID().toString());
            user.setName("feiyangyang");
            user.setPwd("feiyangyang");
            list.add(user);
        }
        userService.batchForeach(list);
        long end = System.currentTimeMillis();
        System.out.println("---------------" + (start - end) + "---------------");
    }
<insert id="batchForeach" parameterType="com.fyy.druid.entity.User">
    insert into
    user(id,`name`,pwd)
    values
    <foreach collection ="userList" item="user" separator =",">
        (#{user.id}, #{user.name}, #{user.pwd})
    </foreach>
</insert>

batch插入

public void batchInsert() {
    long start = System.currentTimeMillis();
    SqlSession sqlSession = sqlSessionTemplate.getSqlSessionFactory().openSession(ExecutorType.BATCH);
    UserService mapper = sqlSession.getMapper(UserService.class);

    for (int i = 0; i < 5000; i++) {
        User user = new User();
        user.setId(UUID.randomUUID().toString());
        user.setName("feiyangyang");
        user.setPwd("feiyangyang");
        mapper.batchInsert(user);
    }
    sqlSession.commit();
    long end = System.currentTimeMillis();
    System.out.println("---------------" + (start - end) + " ---------------");
}

注意:batch模式也有自己的問題,比如在Insert操作時,在事務(wù)沒有提交之前,是沒有辦法獲取到自增的id,這在某型情形下是不符合業(yè)務(wù)要求的

數(shù)據(jù)對比

拼接sql (ms) batch插入 (ms)
500條 1744 639
2000條 26966 2473
5000條 173668 7382

總結(jié)

到此這篇關(guān)于Mybatis兩種不同批量插入方式區(qū)別的文章就介紹到這了,更多相關(guān)Mybatis批量插入方式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java關(guān)鍵字、標(biāo)識符、常量、變量語法詳解

    Java關(guān)鍵字、標(biāo)識符、常量、變量語法詳解

    這篇文章主要為大家詳細(xì)介紹了Java關(guān)鍵字、標(biāo)識符、常量、變量等基礎(chǔ)語法,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 淺談SpringBoot如何自定義Starters

    淺談SpringBoot如何自定義Starters

    今天帶大家來學(xué)習(xí)SpringBoot如何自定義Starters,文中有非常詳細(xì)的圖文介紹及代碼示例,對正在學(xué)習(xí)java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • SpringBoot中Token登錄授權(quán)、續(xù)期和主動終止的方案流程分析

    SpringBoot中Token登錄授權(quán)、續(xù)期和主動終止的方案流程分析

    SpringBoot項(xiàng)目中,基于Token的登錄授權(quán)方案主要有兩種:利用Session/Cookie和JWT,Cookie/Session方案有狀態(tài),不適合分布式架構(gòu),而JWT雖無狀態(tài),但存在過期時間不可強(qiáng)制失效、一次性等缺點(diǎn),本文介紹SpringBoot中Token登錄授權(quán)、續(xù)期和主動終止的方案,感興趣的朋友一起看看吧
    2024-09-09
  • Springboot如何獲取配置文件application.yml中自定義的變量并使用

    Springboot如何獲取配置文件application.yml中自定義的變量并使用

    這篇文章主要介紹了Springboot中獲取配置文件(application.yml)中自定義的變量并使用,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • Zookeeper?Curator使用介紹

    Zookeeper?Curator使用介紹

    curator是Net?ix公司開源的?套Zookeeper客戶端框架,和ZKClient?樣,Curator解決了很多Zookeeper客戶端非常底層的細(xì)節(jié)開發(fā)?作,包括連接重連,反復(fù)注冊Watcher和NodeExistsException異常等,是最流行的Zookeeper客戶端之?
    2022-09-09
  • Java面試題 從源碼角度分析HashSet實(shí)現(xiàn)原理

    Java面試題 從源碼角度分析HashSet實(shí)現(xiàn)原理

    這篇文章主要介紹了Java面試題 從源碼角度分析HashSet實(shí)現(xiàn)原理?,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • Java NIO實(shí)現(xiàn)群聊系統(tǒng)

    Java NIO實(shí)現(xiàn)群聊系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java NIO實(shí)現(xiàn)群聊系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • SpringBoot中使用@scheduled定時執(zhí)行任務(wù)的坑

    SpringBoot中使用@scheduled定時執(zhí)行任務(wù)的坑

    本文主要介紹了SpringBoot中使用@scheduled定時執(zhí)行任務(wù)的坑,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 關(guān)于Java中的實(shí)體類要?implements?Serializable的原因分析

    關(guān)于Java中的實(shí)體類要?implements?Serializable的原因分析

    這篇文章主要介紹了Java中的實(shí)體類為什么要?implements?Serializable,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • 詳解rabbitmq創(chuàng)建queue時arguments參數(shù)注釋

    詳解rabbitmq創(chuàng)建queue時arguments參數(shù)注釋

    這篇文章主要介紹了rabbitmq創(chuàng)建queue時arguments參數(shù)注釋,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03

最新評論