com.microsoft.sqlserver.jdbc.SQLServerException: 传入的请求具有过多的参数。该服务器支持最多 2100 个参数。请减少参数的数目,然后重新发送该请求。

sqlserver数据库插入限制
传入的请求具有过多的参数。该服务器支持最多 2100 个参数。请减少参数的数目,然后重新发送该请求。
解决方法:分批插入

 public void insertBI(List<OperatingOrderCorrection> orderCorrections) {
        List<OdsTradeSell06> tradeSell06s = new ArrayList<>();
        for (OperatingOrderCorrection orderCorrection : orderCorrections) {
            OdsTradeSell06 tradeSell06 = new OdsTradeSell06();
            tradeSell06.setDatDt(orderCorrection.getDate());
            tradeSell06.setFGdID(orderCorrection.getProductId());
            tradeSell06.setFGdIDNdRv(orderCorrection.getFinishedProductId());
            tradeSell06.setOrdNo(orderCorrection.getOrderId());
            tradeSell06s.add(tradeSell06);
        }
        //由于数据库对于插入字段的限制,在这里对批量插入的数据进行分批处理
        int batchCount = 120;//每批commit的个数
        int batchLastIndex = batchCount - 1;// 每批最后一个的下标
        for (int index = 0; index < tradeSell06s.size() - 1; ) {
            if (batchLastIndex > tradeSell06s.size() - 1) {
                batchLastIndex = tradeSell06s.size() - 1;
                sell06Mapper.insertExcel(tradeSell06s.subList(index, batchLastIndex + 1));
                break;// 数据插入完毕,退出循环
            } else {
                sell06Mapper.insertExcel(tradeSell06s.subList(index, batchLastIndex + 1));
                index = batchLastIndex + 1;// 设置下一批下标
                batchLastIndex = index + (batchCount - 1);
            }
        }

    }

mapper foreach Sql

 /**
     * 集合新增
     */
    void  insertExcel(@Param("sells") List<OdsTradeSell06> sells);

 <insert id="insertExcel">
        INSERT INTO
        table (a, b, c, d)
        VALUES
        <foreach collection="sells" item="item" index="index"
                 separator=",">
            (#{item.a}, #{item.b},  #{item.c}, #{item.d})
        </foreach>
    </insert>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值