首页 > 数据库 >java sql 测试批量插入效率

java sql 测试批量插入效率

时间:2022-12-07 15:44:54浏览次数:47  
标签:java 批量 void batchInsertDemoList 插入 num sql taskName

四种模式下的批量插入测试响应:
插入一万条数据,耗时情况ms:

[{
    "taskName": "循环插入",
    "timeMillis": 20771,
    "timeSeconds": 20.771
}, {
    "taskName": "批量保存",
    "timeMillis": 1903,
    "timeSeconds": 1.903
}, {
    "taskName": "Mybatis自带批量保存",
    "timeMillis": 12737,
    "timeSeconds": 12.737
}, {
    "taskName": "spring jdbcTemplate",
    "timeMillis": 11582,
    "timeSeconds": 11.582
}]

 

    /**
     * 默认情况,循环插入
     * 14.312
     */
    public void testMybatisInsertSave(Integer num) {
        List<BatchInsertDemo> batchInsertDemoList = initDemos(num);
        batchInsertDemoList.forEach(batchInsertDemo -> {
            batchInsertDemoMapper.insert(batchInsertDemo);
        });
    }

    /**
     * 批量保存的情况
     * 1.177
     */
    public void testMybatisInsertBatchSave(Integer num) {
        List<BatchInsertDemo> batchInsertDemoList = initDemos(num);
        batchInsertDemoMapper.insertBatch(batchInsertDemoList);
    }


    /**
     * Mybatis 自带批量保存
     * 8.087
     */
    public void testMybatisInsertSqlSessionBatchSave(Integer num) {
        List<BatchInsertDemo> batchInsertDemoList = initDemos(num);
        SqlSession sqlSession = sqlSessionTemplate.getSqlSessionFactory().openSession(ExecutorType.BATCH, false);
        BatchInsertDemoMapper batchInsertDemoMapper = sqlSession.getMapper(BatchInsertDemoMapper.class);
        batchInsertDemoList.forEach(batchInsertDemo -> {
            batchInsertDemoMapper.insert(batchInsertDemo);
        });
        sqlSession.commit();
    }

    /**
     * spring jdbcTemplate
     * 7.132
     */
    public void testJdbcInsertBatchSave(Integer num) {
        List<Object[]> demoList = initJDBCDemos(num);
        String sql = "INSERT INTO  `demo`(  `id`, `name`,\n" +
                "\t\t`key_word`,\n" +
                "\t\t`punch_time`,\n" +
                "\t\t `salary_money`,\n" +
                "\t\t `bonus_money`,\n" +
                "\t\t `sex`, `age`, `birthday`,\n" +
                "\t\t  `email`, `content`)\n" +
                "\t\tVALUES (?,?,?,?,?,?,?,?,?,?,?)";

        jdbcTemplate.batchUpdate(sql, demoList);
    }

  

https://gitee.com/caoyeoo0/xc-springboot/blob/批量插入/src/main/java/com/xc/xcspringboot/service/impl/BatchInsertDemoServiceImpl.java

标签:java,批量,void,batchInsertDemoList,插入,num,sql,taskName
From: https://www.cnblogs.com/ooo0/p/16963277.html

相关文章

  • JAVA基础
    JAVA基础命名规范项目名全小写包全小写域名反写:从大到小类 大驼峰命名:每个单词首字母大写,其他字母小写方法小驼峰命名......
  • 官网下载java相关资源
    一、下载JDK 1、首先进入Downloads >> Java For Developers,如图   2、点击进入后,即可看到如下图所示的页面,在此页面选择相应的jdk即可  3、以上页面中只能下到最......
  • CJB_SQL规约
    1、运算符    不等于     <>    大于等于    >=    小于等于    <=2、命名限制表名最大30个半角字符,以字母开......
  • c#中EntityFramework连接MySql数据示例 支持Update部分字段
    c#程序如果要连接数据库,以前使用的是ADO.Net,通过DataSet、DataTable、ExecuteNoQuery等方法完成,现在微软提供EntityFramework(其实已经提供很久了)组件实现。今天的主题就是......
  • 皕杰报表导出报 java.lang.NoClassDefFoundError: org/apache/commons/codec/digest/D
    从一张报表导出报错看如何分析解决皕杰报表的问题有用户问了一个使用皕杰报表工具时遇到的问题,点击带图表的报表的导出excel按钮没有反应,且页面变成空白,不知从哪里着手解决......
  • 【mysql】误删除了自带的mysql数据库后该怎么恢复?
    前言如果mysql数据库系统自带的mysql数据库被误删了,应该如何恢复?其实操作方法比较简答,今天用实验的方式分享一下1、实验环境信息实验环境信息:mysql版本5.7......
  • sql分组,排序等一些函数的用法
    今天项目的两个地图数据有问题,经检查是由于数据重复造成的,需要去重,解决问题后把使用的相关函数汇总一下   group by是分组函数,partition by是分区函数(像sum()等......
  • Oracle迁移Mysql的sql语句修改需创建的function代码
    DELIMITER $$CREATE  FUNCTION `to_date`(in_str varchar(50), in_format varchar(50)) RETURNS datetime    DETERMINISTICBEGIN DECLARE my_format ......
  • 可以快速批量查询域名是否被QQ拦截的工具,如何查询域名域名QQ安全状态?
    相信很多做站的朋友都遇到过域名被拦截的情况,如果不小心买到被拦截的域名,将会严重影响网站的收录情况,那有没有什么方法可以快速查询域名是否被QQ拦截呢?最近在使用iis7站长工......
  • MySQL8.0的caching_sha2_password问题
    问题描述及分析安装MySQL8.0后,使用MySQLWorkbench登录时报以下错误分析及查找相关资料后,发现MySQL8.0采用了新的更安全的验证方式,详情请查看​​mysql-8-0-4-new-default-......