当我们插入、更新大量数据时,可以使用批量插入和批量更新的方法进行优化。具体代码如下:
一、构建一个组迭代器:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
public class GroupIterator<E> {
private List<E> list;
private int numInGroup;
private int cursor = 0;
public GroupIterator(Collection<E> list, int num) {
this.list = new ArrayList(list);
this.numInGroup = num;
}
public GroupIterator(E[] elements, int num) {
this.list = new ArrayList();
this.list.addAll(Arrays.asList(elements));
this.numInGroup = num;
}
public boolean hasNext() {
return this.cursor != this.list.size();
}
public List<E> next() {
List<E> subElements = new ArrayList(this.list.subList(this.cursor, Math.min(this.cursor + this.numInGroup, this.list.size())));
this.cursor = Math.min(this.cursor + this.numInGroup, this.list.size());
return subElements;
}
public void add(E element) {
this.list.add(element);
}
public void addAll(Collection<? extends E> elements) {
this.list.addAll(elements);
}
}
二、使用组迭代器进行批量插入、更新:
//一次批量插入10条记录
GroupIterator<User> iter = new GroupIterator<>(insertList,10);
while (iter.hasNext()) {
List<User> groupItems = iter.next();
userDao.insertUers(groupItems);
}
根据实际情况调整每次插入、更新数量。