中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Mybatis兩種不同批量插入方式的區別有哪些

發布時間:2021-09-15 10:44:32 來源:億速云 閱讀:150 作者:小新 欄目:開發技術

小編給大家分享一下Mybatis兩種不同批量插入方式的區別有哪些,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

前言

本文使用 Mybatis 進行批量插入,比較兩種不同的插入方式的區別。

測試

批量插入注意事項:

1、連接數據庫時添加參數 allowMultiQueries=true,支持多語句執行,批處理

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

拼接 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操作時,在事務沒有提交之前,是沒有辦法獲取到自增的id,這在某型情形下是不符合業務要求的

數據對比


拼接sql (ms)batch插入 (ms)
500條1744639
2000條269662473
5000條1736687382

看完了這篇文章,相信你對“Mybatis兩種不同批量插入方式的區別有哪些”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

盐亭县| 武义县| 玉林市| 恭城| 固原市| 白玉县| 长宁县| 保亭| 依安县| 城口县| 正定县| 平武县| 横山县| 松阳县| 洛川县| 石首市| 大丰市| 冕宁县| 邵阳县| 岑溪市| 徐汇区| 彝良县| 亳州市| 盖州市| 阳信县| 塔城市| 台北市| 彩票| 大理市| 衡阳县| 岳阳县| 平武县| 灌南县| 江永县| 依安县| 敦化市| 新化县| 闻喜县| 镇康县| 淅川县| 共和县|