mysql+mybatis 批量操作sql对象过大问题解决

在批量操作的时候,mybatis的底层还是组装SQL语句执行。

当行数过多,则会导致SQL过大而执行失败。

处理方式有两种:

1、修改代码,拆分多个小批量操作SQL执行。

伪代码如下:

// collect  集合对象
for (int index = 0; index < forCount; index++) {
     int fromIndex = count * index;
     int toIndex = count * (index + 1);
     if (toIndex > collect.size()) {
           toIndex = collect.size();
      }
     //拆分小对象
      List<Entity> batchList = collect.subList(fromIndex, toIndex);
      //操作库
      service.insertBatch(batchList);
}

2、变更mysql的单条执行大小的上限(默认1M)。

如果您所使用的是RDS,就不用改了,它默认是1024M。

直接修改my.cnf(windows下是my.ini文件)的max_allowed_packet 参数值,没有的话可以知己设置。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 猿与汪的秘密 设计师:白松林 返回首页