MyBatis 分批次执行(新增,修改,删除)
import com.google.common.collect.Lists;
import java.util.Iterator;
import java.util.List;
import java.util.function.Consumer;
/**
* @Description mybatis分批插入数据使用
* @Author WangKun
* @Date 2024/9/19 11:20
* @Version
*/
public class MyBatisSqlUtils {
/**
* @param data 全量数据(全部数据)
* @param batchSize 批次插入大小(每次插入数据多少)
* @param consumer 插入处理(插入值)
* @Description 分批次批量插入
* @Throws
* @Return void
* @Date 2024-09-19 11:22:05
* @Author WangKun
**/
public static <E> void batch(List<E> data, int batchSize, Consumer<List<E>> consumer) {
if (data == null || data.isEmpty()) {
return;
}
List<E> list = Lists.newArrayList();
int size = data.size();
int mathMin = Math.min(batchSize, size);
int i = 1;
for (Iterator<E> item = data.iterator(); item.hasNext(); ++i) {
list.add(item.next());
if (i == mathMin) {
consumer.accept(list);
list.clear();
mathMin = Math.min(mathMin + batchSize, size);
}
}
}
}
使用:以新增为例,每次插入100条
MyBatisSqlUtils.batch(list, 100, xxx-> {
xxxService.insert (xxx);
});
//lambda写法调用
MyBatisSqlUtils.batch(list, 100, xxxService::insert);
xml中使用<foreach> 既可以了
例子
原文地址:https://blog.csdn.net/WangKun_0612/article/details/142391989
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!