mybatis批量插入

一、定义DBExec

java 复制代码
import java.util.List;


public abstract class DBExec<T> {
    public abstract void operate(List<T> list);
}

二、定义BatchDBService

java 复制代码
public interface BatchDBService<T> {
    void exec(int batchSize, List<T> list, DBExec<T> dbExec);
}

三、实现BatchDBService

java 复制代码
@Service
public class BatchDBImpl<T> implements BatchDBService<T> {
    @Override
    public void exec(int batchSize, List<T> list, DBExec<T> dbExec) {
        if (list != null && list.size() > 0) {
            int init = batchSize;// 每隔batchSize条循环一次
            int total = list.size();
            int cycelTotal = total / init;//获取循环次数
            if (total % init != 0) {
                cycelTotal += 1;
                if (total < init) {
                    init = total;
                }
            }

            for (int j = 0; j < cycelTotal; j++) {
                List<T> batchInsertList = new ArrayList<>();
                for (int i = j * init; i < (j + 1) * init && i < list.size(); i++) {
                    batchInsertList.add(list.get(i));
                }
                dbExec.operate(batchInsertList);
            }

        }

    }
}

四、使用

java 复制代码
   BatchDBService batchDBService = new BatchDBImpl();
        DBExec<TestDO> saveDBExec = new DBExec<TestDO>() {
            @Override
            public void operate(List<TestDO> list) {
                testDao.batchInsert(list);
            }
        };
        batchDBService.exec(2000, testList, saveDBExec);
相关推荐
计算机学姐2 小时前
基于SpringBoot的校园二手书籍交易系统【个性化推荐+数据可视化统计+我买到的+我卖出的】
vue.js·spring boot·后端·mysql·信息可视化·intellij-idea·mybatis
zjneymar3 小时前
Mybatis的动态sql
java·sql·mybatis
稻草猫.4 小时前
MyBatis-Plus高效开发全攻略
java·数据库·后端·spring·java-ee·mybatis·mybatis-plus
计算机学姐5 小时前
基于SpringBoot的网吧管理系统
java·spring boot·后端·spring·tomcat·intellij-idea·mybatis
弹简特5 小时前
【JavaEE20-后端部分】 MyBatis 入门第四篇:多表查询、#{}与${}详解、数据库连接池
数据库·mybatis
哆啦A梦158814 小时前
Springboot整合MyBatis实现数据库操作
数据库·spring boot·mybatis
弹简特1 天前
【JavaEE19-后端部分】 MyBatis 入门第三篇:使用XML完成增删改查
xml·mybatis
小江的记录本1 天前
【VO、DTO、Entity】VO、DTO、Entity三大核心数据对象全解析(附核心对比表 + 代码示例)
java·数据库·spring boot·spring·架构·mybatis·数据库架构
计算机学姐1 天前
基于SpringBoot的流浪动物救助收养系统
vue.js·spring boot·后端·mysql·java-ee·intellij-idea·mybatis
计算机学姐1 天前
基于SpringBoot的蛋糕烘焙销售服务系统
java·spring boot·后端·spring·tomcat·intellij-idea·mybatis