MyBatis 批量插入的 3 种方式!还有谁不会?

springboot环境下,使用sql server数据库和jdk 1.8版本时,我们对比了三种批量插入数据的方式。以下是对这三种方法的详细分析和结论:

结论

对于少量数据的插入,建议使用反复执行单条插入语句的方式,因为这种方法简单易用。对于大量数据的插入,推荐使用批处理执行的方式。在我的测试环境中,插入20条左右的数据时,两种方法的耗时都在百毫秒级别,但批处理方式在处理大量数据时表现更好。无论何时,都不建议使用XML拼接SQL的方式。

三种插入方式的详细对比

1. 反复执行单条插入语句

这种方法的实现非常简单,适合少量数据的插入。使用tk.Mapper插件时,代码量极少,仅需以下几行代码:

@Transactionalpublic void add1(List itemList) {    itemList.forEach(itemMapper::insertSelective);}

优点:

代码量少,易于实现。适合少量数据的插入。

缺点:

会译·对照式翻译 会译·对照式翻译

会译是一款AI智能翻译浏览器插件,支持多语种对照式翻译

会译·对照式翻译 0 查看详情 会译·对照式翻译 时间复杂度为O(n),效率较低。

2. XML拼接SQL

这种方法涉及到大段的XML和SQL语句,需要手动拼接SQL语句,容易出错且工作效率低。此外,在插入大量数据时,可能会因为SQL语句过长而报错。

    INSERT INTO tb_item VALUES            (newId(),#{item.uniqueCode},#{item.projectId},#{item.name},#{item.type},#{item.packageUnique},        #{item.isPackage},#{item.factoryId},#{item.projectName},#{item.spec},#{item.length},#{item.weight},        #{item.material},#{item.setupPosition},#{item.areaPosition},#{item.bottomHeight},#{item.topHeight},        #{item.serialNumber},#{item.createTime}    

优点:

在小数据量时,效率尚可。

缺点:

代码复杂,容易出错。在大量数据插入时容易报错,例如在SQL Server中,插入500条和1000条数据时报错,提示SQL语句过长。不推荐使用。

3. 批处理执行

批处理执行适合大量数据的插入,效率高且实现相对简单。

@Servicepublic class ItemService {    @Autowired    private ItemMapper itemMapper;    @Autowired    private SqlSessionFactory sqlSessionFactory;    // 批处理    @Transactional    public void add(List itemList) {        SqlSession session = sqlSessionFactory.openSession(ExecutorType.BATCH, false);        ItemMapper mapper = session.getMapper(ItemMapper.class);        for (int i = 0; i < itemList.size(); i++) {            mapper.insertSelective(itemList.get(i));            if (i % 1000 == 0) {                session.commit();            }        }        session.commit();        session.close();    }}

优点:

适合大量数据的插入,效率高。时间复杂度为O(logn),且常数较小。

缺点:

比单条插入复杂,但仍较为简单。

测试结果

在测试中,插入10条和25条数据时,三种方法的耗时都在百毫秒级别,但XML拼接SQL的方式在插入500条和1000条数据时报错,提示SQL语句过长。

总结

少量数据插入(如20条以内):使用反复执行单条插入语句,简单且易于实现。大量数据插入:使用批处理执行,效率高且稳定。不推荐使用:XML拼接SQL的方式,因其复杂且容易出错。

通过以上对比和分析,可以根据具体需求选择最适合的插入方式。

MyBatis 批量插入的 3 种方式!还有谁不会?

以上就是MyBatis 批量插入的 3 种方式!还有谁不会?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/232792.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月3日 21:52:39
下一篇 2025年11月3日 21:53:25

相关推荐

发表回复

登录后才能评论
关注微信