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);
相关推荐
码熔burning44 分钟前
Redis 的三种高效缓存读写策略!
redis·缓存·mybatis
stein_java11 小时前
Mybatis-7 XML映射器
数据库·sql·mybatis
托比-马奎尔12 小时前
MyBatis入门到精通:CRUD实战指南
mybatis
ByteBlossom13 小时前
MyBatis高频问题-自动映射与缓存解析
mybatis
半夏陌离19 小时前
SQL 进阶指南:视图的创建与使用(视图语法 / 作用 / 权限控制)
java·数据库·mybatis
BillKu1 天前
Spring Boot中MyBatis的定义与使用
spring boot·mybatis
lozhyf1 天前
固定资产管理系统(vue+Springboot+mybatis)
vue.js·spring boot·mybatis
热烈勒温1 天前
Mybatis入门、操作数据、配置xml映射、数据封装
xml·mybatis
javadaydayup2 天前
为什么 MyBatis Mapper 接口能像普通 Bean 一样被 @Autowired?
后端·mybatis
小趴菜不能喝3 天前
Spring boot3.x整合mybatis-plus踩坑记录
java·spring boot·mybatis