最近项目需要大批量的插入数据库,因一次插入上万条数据时sql执行速度较慢,决定对数据列表分批插入。网上看了下,对List进行分批处理的思路大部分都是基于边读取边移除的策略,而当List的长度上万时,这种策略很影响性能,于是决定采用不删除的策略,特在此记录该方法:
public static void main(String[] args) {
List<Integer> dataList = new ArrayList<Integer>();
for(int i = 0; i < 1015; i++)
dataList.add(i);
int insertLimit = 100;
Integer size = dataList.size();
int maxStep = (size + insertLimit - 1) / insertLimit;
int maxIndex;
for(int i = 0; i < maxStep; i++) {
maxIndex = (i + 1) * insertLimit;
maxIndex = maxIndex > size ? size : maxIndex;
System.out.println(dataList.subList(i * insertLimit, maxIndex));
}
}