mybatis批量插入数据list超过一定长度时报错的解决办法(批量插入数据,数据过多时报错解决和批量修改报错

这篇具有很好参考价值的文章主要介绍了mybatis批量插入数据list超过一定长度时报错的解决办法(批量插入数据,数据过多时报错解决和批量修改报错。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在使用MyBatis进行批量新增时,如果数据量较大,可以考虑分批次插入以减少数据库的负载压力。这里提供一种基于MyBatis的分批次插入的方法:

  1. 创建一个新的Mapper XML文件(例如:BatchInsertMapper.xml)来定义批量插入的SQL语句。在该XML文件中,添加如下内容:
<!-- 参数为List类型,使用foreach循环插入每个对象 -->
<insert id="batchInsert" parameterType="java.util.List">
  INSERT INTO your_table (column1, column2, ...)
  VALUES
  <foreach collection="list" item="item" separator=",">
    (#{item.property1}, #{item.property2}, ...)
  </foreach>
</insert>

 文章来源地址https://www.toymoban.com/news/detail-570009.html

请将上述代码中的your_table替换为你的目标表名,并根据实际情况指定要插入的列和属性。

        2.在对应的Mapper接口中声明批量插入的方法。添加如下代码:

public interface YourMapper {
  void batchInsert(List<YourEntity> entities);
}

 请将上述代码中的YourMapper替换为你的Mapper接口名和YourEntity替换为你的实体类名。

          3.在你的服务类或其他逻辑代码中,注入该Mapper并调用批量插入方法。例如:

@Autowired
private YourMapper yourMapper;

public void batchInsertData(List<YourEntity> dataList) {
  int batchSize = 1000; // 指定每批次插入的数据量

  for (int i = 0; i < dataList.size(); i += batchSize) {
    int endIndex = Math.min(i + batchSize, dataList.size());
    List<YourEntity> batchList = dataList.subList(i, endIndex);

    yourMapper.batchInsert(batchList);
  }
}

实话实说优化效率嘎嘎的,看数据量的大小,如果每条数据的数据量很大,建议把batchSize改的小一点。

请将上述代码中的YourEntity替换为你的实体类名,并根据需要调整batchSize的大小。

这样,通过循环遍历将数据列表分割为批次,并调用批量插入的方法,就可以实现分批次插入的功能。

希望对你有所帮助!

如果说是批量修改报错,

eg:update d_access_history_page set line_name = ? where line_id = ? ; update d_access_page set line_name = ? where line_id = ? ;
这种报错,报错是因为没有开启批量更新,不开启批量更新只允许操作一条,想要批量操作就要在数据库配置文件中的url后边增加&allowMultiQueries=true(在数据的配置后面加上他eg:

mysql.db-name}?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=true )

 

到了这里,关于mybatis批量插入数据list超过一定长度时报错的解决办法(批量插入数据,数据过多时报错解决和批量修改报错的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MyBatis批量插入数据优化,增加一个参数,效率提升百倍

    项目中进行接口压测,发现批量插入的速度有点超出预期,感觉很奇怪,经过定位后发现mybatise-plus批量保存的处理十分缓慢,使用的是saveBatch方法,这点有点想不通。于是就进行了相关内容分析。 根据mybatise-plus中saveBatch的方法进行源码查看:   继续跟踪逻辑,从代码上看,

    2024年02月15日
    浏览(44)
  • mybatis批量插入数据导致系统OOM,微服务内存爆了

    今天我们来说说工作中遇到的一个真实案例,由于使用mybatis的批量插入功能,导致系统内存溢出OOM(Out Of Memory), \\\"java.lang.OutOfMemoryError: Java heap space\\\"的报错,导致服务出现短暂的服务不可用,大概一两分钟不可用。这其实是个非常危险的故障,可能在高峰期导致整个系统瘫

    2024年02月01日
    浏览(48)
  • Java8 实现批量插入和更新,SpringBoot实现批量插入和更新,Mybatis实现批量插入和更新

    基于mybatis实现的批量插入和更新 由于直接执行批量所有数据可能会出现长度超出报错问题,使用如下方式即可解决 原理还是分配执行,这里的100就是设定每次执行最大数 这里使用插入作为例子,也可以使用批量更新 更新的写法

    2024年02月12日
    浏览(54)
  • Mybatis批量插入、修改

            在 MyBatis 中, foreach 标签用于遍历集合类型的条件,并且可以将多个参数值拼接成为 SQL 语句的一个部分,通常被用于批量插入或更新等操作。  foreach属性及介绍          属性 介绍 collection 集合名称 item 字符别名 index 索引别名 open 循环前缀 close 循环后缀 separato

    2024年02月07日
    浏览(39)
  • Mybatis批量插入

    使用Mybatis框架批量插入的3种方法:多次调用insert方法、foreach标签、batch模式 后端java代码:

    2024年02月12日
    浏览(58)
  • Mybatis批量插入方式有哪些

    MyBatis批量插入有多种写法,最后博主总结一些常见的批量插入写法供大家参考 使用XML配置文件进行批量插入:在XML映射文件中使用 insert 标签,并通过 foreach 标签迭代批量数据,然后在SQL语句中使用 VALUES 。 使用Java注解进行批量插入:在实体类上使用 @Insert 注解,并

    2024年02月11日
    浏览(43)
  • MyBatis的五种批量插入

    一.直接循环插入 最终耗时:14s多 二.关闭MySql自动提交,手动进行循环插入提交 平均:0.12s 第三种:用List集合的方式插入数据库(推荐) 第四种: MyBatis-Plus提供的SaveBatch方法 直接报错: 看报错信息: 长串:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw excep

    2024年03月15日
    浏览(46)
  • Mybatis批量插入/更新性能优化思路

            最近在做数据写入服务的性能优化,主要是基于Mybatis-Plus实现一套批量写数据的服务,不过该服务是支持整个平台所有需要持久化的业务实体。所以这种服务不仅仅有insert操作还有update的操作。根据以往的MySQL数据库写入经验,主要总结了两套批量插入、批量插入

    2024年04月25日
    浏览(41)
  • mybatis-plus 批量插入示例

    正常我们使用mybatis-plus插入的时候,首先想到的是  saveBatch 方法,不过看了下打印出来的sql和底层代码,才发现它并不是真正的批量插入。     实现层   ServiceImpl 中的代码为 通过监控控制台发现,它只是循环每1000条去插入,效率非常低。   参考网友的文章,找到一个支

    2024年02月15日
    浏览(39)
  • Mybatis-plus---的批量插入

    批量插入 一、继承IService(伪批量) 二、insertBatchSomeColumn Mybatis-plus很强,为我们诞生了极简CURD操作,但对于数据批量操作,显然默认提供的insert方法是不够看的了,于是它和它来了!!! Mybatis-plus提供的两种插入方式          继承IService(伪批量)         insertBatchSo

    2024年02月16日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包