第一种就是自己分批写入:建立新list大小为500,然后循环你的数据
List<UserVO> list=mapper.getList(); //从数据库查询出来的list,也就是需要进行批量插入的总list
//一次插入的条数,也就是分批的list大小
int maxCount= 500;
int listSize=list.size();
int maxSize=listSize - 1;
List<UserVO> newList = new ArrayList<UserVO>();//新建一个载体list
for (int i = 0; i < listSize; i++) {
//分批次处理
newList.add(list.get(i));//循环将数据填入载体list
if (maxCount== newList.size() || i == maxSize) { //载体list达到要求,进行批量操作
//调用批量插入
mapper.insertList(newList);
newList.clear();//每次批量操作后,清空载体list,等待下次的数据填入
}
}
第二种导入apache的包,使用他的 Lists.partition()
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.4</version>
</dependency>
List<Integer> list=new ArrayList<>();
for (int i=0;i<500;i++){
list.add(i);
}
List<List<Integer>> newList = Lists.partition(list, 150);
for (List<Integer> list1:newList){
System.out.println(list1.size());
}
第三种使用guava的包
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.0.1-jre</version>
</dependency>
List<Integer> list=new ArrayList<>();
for (int i=0;i<500;i++){
list.add(i);
}
List<List<Integer>> newList = Lists.partition(list, 150);
for (List<Integer> list1:newList){
System.out.println(list1.size());
}