大数据量批量插入、更新优化方法

当我们插入、更新大量数据时,可以使用批量插入和批量更新的方法进行优化。具体代码如下:

一、构建一个组迭代器:

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);
   }

根据实际情况调整每次插入、更新数量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值