首页 > 其他分享 >mybatis批量插入大量数据

mybatis批量插入大量数据

时间:2023-02-22 11:48:07浏览次数:40  
标签:语句 index 批量 BATCH 插入 sqlSession SQL mybatis

Mybatis内置的ExecutorType有3种,SIMPLE、REUSE、BATCH; 默认的是simple,该模式下它为每个语句的执行创建一个新的预处理语句,单条提交sql;而batch模式重复使用已经预处理的语句,并且批量执行所有更新语句,显然batch性能将更优;但batch模式也有自己的问题,比如在Insert操作时,在事务没有提交之前,是没有办法获取到自增的id,这在某型情形下是不符合业务要求的.

JDBC 在执行 SQL 语句时,会将 SQL 语句以及实参通过网络请求的方式发送到数据库,一次执行一条 SQL 语句,一方面会减小请求包的有效负载,另一个方面会增加耗费在网络通信上的时间。通过批处理的方式,我们就可以在 JDBC 客户端缓存多条 SQL 语句,然后在 flush 或缓存满的时候,将多条 SQL 语句打包发送到数据库执行,这样就可以有效地降低上述两方面的损耗,从而提高系统性能。

不过,有一点需要特别注意:每次向数据库发送的 SQL 语句的条数是有上限的,如果批量执行的时候超过这个上限值,数据库就会抛出异常,拒绝执行这一批 SQL 语句,所以我们需要控制批量发送 SQL 语句的条数和频率.

//进行jdbc批处理时需在JDBC的url中加入rewriteBatchedStatements=true
//如果自动提交设置为true,将无法控制提交的条数,改为手动提交
  SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH,false);
  MyMapper myMapper = sqlSession.getMapper(MyMapper.class);
  private int BATCH = 1000;
  for (int index = 0; index < data.size(); index++) {
       myMapper.insert(data.get(i))
        if (index != 0 && index % BATCH == 0) {
          sqlSession .commit();
        }
      }
  sqlSession.commit();

标签:语句,index,批量,BATCH,插入,sqlSession,SQL,mybatis
From: https://www.cnblogs.com/ylya/p/17143813.html

相关文章

  • Mybatis中xml文件书写sql注意项
      1、namespace的值要与mapper接口绑定。2、select标签中的id要与mapper接口中的方法名绑定。3、模糊查询时注意%的位置;且不用像SQL里一样加双引号;SQL末尾不要加分......
  • ssm学习笔记23001-mybatis接入和数据库连接实现一个插入数据的操作
    mybatis:是什么,用来干嘛的,同类竞品中有何种优势?mybatis在idea中的引入:1、创建一个空工程2、创建一个空的maven文件:会自动生成一个pox文件,打包类型配置为jar,添加mybat......
  • Mybatis Plus 框架项目落地实践总结
    在使用了MybatisPlus框架进行项目重构之后,关于如何更好的利用Mybatisplus。在此做一些总结供大家参考。主要总结了以下这几个方面的实践。基础设计BaseEntity逻辑......
  • 2月21日javaweb学习之MyBatis
    MyBatis是一款优秀的持久层框架,所谓持久层就是负责将数据保存到数据库的那一层代码。(1)MyBatis快速入门,查询user表中所有的数据1.创建user表,添加数据2.创建模块,导入坐标......
  • 七、Spring整合MyBatis
    整合思路将SqlSessionFactory配置到Spring容器中<!--加载jdbc.properties--><context:property-placeholderlocation="classpath:jdbc.properties"/><!--配置数据源-......
  • MyBatis中mapper文件的常用标签
    <sql>标签:用来封装sql语句或者复用语句的,然后用<include>标签来调用<sqlid="selectFields">stuid,stuname,stuclass,stuage</sql><selectid="selectStudentByNam......
  • 消息称微软必应将在人工智能搜索中插入广告
    据报道,最近,人工智能对话工具(即内容生产)的植入,在搜索引擎市场引发了一场新的竞争。微软在必应搜索中植入了人工智能对话和应答技术,希望挑战谷歌的行业主导权。知情人士称,微......
  • 抖音批量采集
    前言步骤运行程序进行选项设置新增采集开始新增开始采集采集结果详细分类采集视频......
  • PDF从批量解密到批量去除水印
    前言PDF批量解密工具AdobeAcrobatDC闲得无聊步骤批量去除密码从某盘下载原始加密pdf安装解密程序后直接运行pd解密程序(根据自己需求在下方修改输出文件位......
  • 六、MyBatis的注解开发
    MyBatis的常用注解这几年来注解开发越来越流行,Mybatis也可以使用注解开发方式,这样我们就可以减少编写Mapper映射文件了。我们先围绕一些基本的CRUD来学习,再学习复杂映射......