栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

批量插入数据推荐写法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

批量插入数据推荐写法

SqlSession session = sessionFactory.openSession(ExecutorType.BATCH);
for (Model model : list) {
    session.insert("insertStatement", model);
}
session.flushStatements();

与默认的 ExecutorType.SIMPLE 不同,该语句将准备一次并为每条要插入的记录执行。

从资料中明白,默认执行器类型简单,会为每次创作创造一个新的预设语句,也就是创建一个新的语句。 MyBatis 存在的语句,无法采用,那么在每次调用方法时,都会重新解析sql语句。
所以,非要使用foreach的方式来进行插入的话,可以考虑减少一次插入中值的个数,最好能达到最底部的值,如果能成功的话。以前插20~50行数量是比较合适的,时间消耗也能接受。
#mybatis 推荐

SqlSession session = sqlSessionFactory.openSession(ExecutorType.BATCH);
try {
    SimpleTableMapper mapper = session.getMapper(SimpleTableMapper.class);
    List records = getRecordsToInsert(); // not shown
 
    BatchInsert batchInsert = insert(records)
            .into(simpleTable)
            .map(id).toProperty("id")
            .map(firstName).toProperty("firstName")
            .map(lastName).toProperty("lastName")
            .map(birthDate).toProperty("birthDate")
            .map(employed).toProperty("employed")
            .map(occupation).toProperty("occupation")
            .build()
            .render(RenderingStrategy.MYBATIS3);
 
    batchInsert.insertStatements().stream().forEach(mapper::insert);
 
    session.commit();
} finally {
    session.close();
}

经过试验,使用了ExecutorType.BATCH的插入方式,性能显着提升,不到2s便能全部插入完成。

总结一下,如果MyBatis需要进行批量插入,推荐使用ExecutorType。BATCH的插入方式,如果非要使用的插入时间,需要每次插入的记录控制在20~50左右。


-END-

如果你喜欢我的分享,欢迎关注微信公众号 java学长分享技术干货!

悄悄告诉你免费赠送重磅互联网架构师教程,提升职场技术水平!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/585304.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号