Spring+Mybatis如何处理大批量sql(for循环+批处理法)

如果只是单纯地将Mapper语句放在循环中,那么会为每次的循环都创建一个事务,导致大批量的sql耗时会很长。

如果我们让在同一个循环中的Mapper语句在一个事务中提交,批处理这些sql,不多次创建事务,那么我们就能极大地改善大批量sql的执行时间了。

代码如下:

import com.hbnu.mapper.TestMapper;
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class TestService {
    @Autowired
    private SqlSessionFactory sqlSessionFactory;

    public void BatchDoSql(){
        //关闭自动提交,开启事务,即开启批处理
        SqlSession sqlSession= sqlSessionFactory.openSession(ExecutorType.BATCH,false);
        //获取Mapper映射
        TestMapper mapper=sqlSession.getMapper(TestMapper.class);
        try{
            for(int i=0;i<50000;i++){
                String data="test";
                mapper.insert(data);
            }
            sqlSession.commit();//将sql一次性提交
        }catch (Exception e){
            sqlSession.rollback();//回滚
            throw e;
        }
        sqlSession.close();
    }
}

相关推荐

  1. Spring如何解决循环依赖?

    2023-12-17 00:02:02       47 阅读
  2. Spring如何解决循环依赖

    2023-12-17 00:02:02       42 阅读
  3. Spring如何解决循环依赖

    2023-12-17 00:02:02       28 阅读
  4. mybatis-plus循环处理多个条件的 or 查询

    2023-12-17 00:02:02       47 阅读
  5. Spring循环依赖问题如何解决

    2023-12-17 00:02:02       35 阅读
  6. Spring 如何解决 Bean 循环依赖

    2023-12-17 00:02:02       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-17 00:02:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-17 00:02:02       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-17 00:02:02       87 阅读
  4. Python语言-面向对象

    2023-12-17 00:02:02       96 阅读

热门阅读

  1. Linux 系统中包管理工具

    2023-12-17 00:02:02       52 阅读
  2. linux 常用脚本搜集(nginx) —— 筑梦之路

    2023-12-17 00:02:02       59 阅读
  3. c++中的new与delete

    2023-12-17 00:02:02       70 阅读
  4. Shell三剑客:sed(简介)

    2023-12-17 00:02:02       62 阅读
  5. 半导体:Gem/Secs基本协议库的开发(3)

    2023-12-17 00:02:02       54 阅读
  6. 基于BP神经网络的小车避障算法仿真与实现

    2023-12-17 00:02:02       55 阅读
  7. 包络检波的MATLAB实现

    2023-12-17 00:02:02       43 阅读