sqlserver传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。此 RPC 请求中提供了过多的参数。最多应为 2100。
出现这个问题是因为调用mybatis的xml
values拼接的值超过2100个导致报错,所以只需要减少拼接的参数就可以了
if (!CollectionUtils.isEmpty(entities)) { // 这里做分步插入,数据量过大 mybatis foreach 拼接会有问题 double product = (double)entities .size() / 40; int index = (int)Math.ceil(product); // 向上取整 for (int i=0;i < index;i++){ //stream流表达式,skip表示跳过前i*40条记录,limit表示读取当前流的前40条记录 this.basOrdersGoodsDao.insertBatch(entities.stream().skip(i*40).limit(40).collect(Collectors.toList())); } }
这里除40是因为我每个实体字段接近50,加起来不会超过2100