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);
相关推荐
赵得C3 小时前
完整 Oracle 12c 分页 Demo(Spring Boot+MyBatis+PageHelper)
spring boot·oracle·mybatis
任子菲阳7 小时前
学Javaweb第四天——springboot入门
java·spring·mybatis
赵得C10 小时前
Spring Boot+MyBatis:用 PageHelper 实现 Oracle 12c 的 OFFSET 分页
spring boot·oracle·mybatis
Leonardo_Fibonacci12 小时前
skbbs-day5
java·开发语言·mybatis
cike_y12 小时前
Mybatis之分页的实现&日志工厂&Log4j详解
数据库·log4j·mybatis
星光一影1 天前
教育培训机构消课管理系统智慧校园艺术舞蹈美术艺术培训班扣课时教务管理系统
java·spring boot·mysql·vue·mybatis·uniapp
cike_y1 天前
Mybatis之作用域(Scope)和生命周期-解决属性名和字段名不一致的问题&ResultMap结果集映射
java·开发语言·数据库·tomcat·mybatis
柒.梧.1 天前
MyBatis一对一关联查询深度解析:大实体类、SQL99联表、分布式查询实践
分布式·mybatis
Coder_Boy_1 天前
SpringAI与LangChain4j的智能应用-(理论篇)
人工智能·spring·mybatis·springai·langchain4j
zhoupenghui1681 天前
项目访问接口时报“MISCONF Redis is configured to save RDB snapshots, ...“错误的解决方案
数据库·redis·mybatis