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);
相关推荐
空空kkk16 小时前
MyBatis——代理Dao方式的增删改查操作
java·数据库·mybatis
2501_941800881 天前
Java高性能搜索引擎与Lucene实战分享:大规模文本索引、检索与优化经验
mybatis
q***42822 天前
SpringCloud-持久层框架MyBatis Plus的使用与原理详解
spring·spring cloud·mybatis
北郭guo2 天前
MyBatis框架讲解,工作原理、核心内容、如何实现【从浅入深】让你看完这篇文档对于MyBatis的理解更加深入
java·数据库·mybatis
♡喜欢做梦3 天前
MyBatis XML 配置文件:从配置规范到 CRUD 开发实践
xml·java·java-ee·mybatis
q***69773 天前
Spring Boot与MyBatis
spring boot·后端·mybatis
tanxiaomi3 天前
Spring、Spring MVC 和 Spring Boot ,mybatis 相关面试题
java·开发语言·mybatis
q***96583 天前
Spring Boot 集成 MyBatis 全面讲解
spring boot·后端·mybatis
p***93034 天前
Spring Boot中集成MyBatis操作数据库详细教程
数据库·spring boot·mybatis
chxii4 天前
在 MyBatis 中开启 SQL 日志
java·数据库·mybatis