java-分割List一千条分割一次
导入大量数据前言提示:导入一定要确定导入的数据类型和导入的顺序,我这里用的是自己封装好的工具,导入我提供出来大家可以参考。二、用list导入每次导入一千条代码如下(示例):/*** 批量添加方法*/@Async//异步注解@Transactional(rollbackFor = RuntimeException.class)//事务注解public void insertBatchs(List&l
·
导入大量数据
前言
提示:导入一定要确定导入的数据类型和导入的顺序,我这里用的是自己封装好的工具,导入我提供出来大家可以参考。
二、用list导入每次导入一千条
代码如下(示例):
/**
* 1000条新增一次
* 批量添加方法
*/
@Async//异步注解
@Transactional(rollbackFor = RuntimeException.class)//事务注解
public void insertBatch(List<dog> str) {
int listSize = str.size();
int toIndex = 1000;
for (int i = 0; i <listSize; i += 1000) {
//作用为toIndex最后没有toIndex条数据则剩余几条newList中就装几条
if (i + 1000 > listSize) {
toIndex = listSize - i;
}
//分割lst
List<dog> newList = str.subList(i, i + toIndex);
//写入添加方法,需要写你的新增方法,把newList分切后的数据新增进入数据库。
service.insertBatch(newList )
}
}
public Result insertBatchs(List<dog> flows){
int size = flows.size();
if(size <= 1000){
return super.insertBatch(flows);
}
ListQueue<dog> queue = new ListQueue<>();
for (int i = 0; i < flows.size(); i++) {
queue.add(flows.get(i));
if(queue.count() % 1000 == 0 || i == size - 1){
super.insertBatch(queue.getAll());
queue=new ListQueue<>();
}
}
return Result.success();
}
更多推荐
所有评论(0)