目 录CONTENT

文章目录

把list拆分成多个list分批插入到数据库

筱晶哥哥
2022-01-05 / 0 评论 / 0 点赞 / 42 阅读 / 1364 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2024-03-23,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

将多条数据拆分进行插入,这样效率会高一点,不会造成堆内存溢出异常!否则数据量大会造成堆异常溢出异常,所以将其拆分成多条分批插入。

// 假如这里是从文件中读取的数据
// 可能是一个数据量很大的list
List<Article> articles = readCsv(file);
if (articles.size() > 0) {
    // 一次插入的条数
    int batchSize = 1000;
    // 分成limit次插入到数据库
    int limit = (articles.size() + batchSize - 1) / batchSize;
    Stream.iterate(0, n -> n + 1)
        .limit(limit)
        .forEach(a -> {
            List<Article> paperList = articles.stream()
                .skip(a * batchSize)
                .limit(batchSize)
                .collect(Collectors.toList());
            // doSomething();
            articleMapper.batchInsert(paperList);
        });
    LOGGER.info("数据解析入库完成!");
}

当然这并不是最优方案!

0

评论区