从零开始SpringCloud Alibaba实战(91)——mybaties批量修改

本文介绍了批量修改数据库记录的方法,通过MyBatis的XML映射文件和Java代码展示了如何设置更新条件,针对批量更新可能导致的错误,提出将大列表拆分为小列表的解决方案,以避免超长列表导致的系统异常。
摘要由CSDN通过智能技术生成

代码

mapper

 /**
     * 批量修改
     * @param updateList
     * @return
     */
    int updateBatch(@Param("list") List<SjbdZjbQtbt> updateList);
}

xml

<update id="updateBatch" parameterType="java.util.List">
        <foreach collection="list" item="updateList" index="index" open="begin" close=";end;" separator=";">
            UPDATE SJBD_ZJB_QTBT
            <set>
                <if test="updateList.btnd != null">
                    BTND = #{updateList.btnd,jdbcType=VARCHAR},
                </if>
                <if test="updateList.zzjgid != null">
                    ZZJGID = #{updateList.zzjgid,jdbcType=VARCHAR},
                </if>
                <if test="updateList.xm != null">
                    XM = #{updateList.xm,jdbcType=VARCHAR},
                </if>
                <if test="updateList.bzhm != null">
                    BZHM = #{updateList.bzhm,jdbcType=VARCHAR},
                </if>
                <if test="updateList.rybs != null">
                    RYBS = #{updateList.rybs,jdbcType=VARCHAR},
                </if>
                <if test="updateList.sfjf != null">
                    SFJF = #{updateList.sfjf,jdbcType=VARCHAR},
                </if>
                <if test="updateList.btjgfk != null">
                    BTJGFK = #{updateList.btjgfk,jdbcType=VARCHAR},
                </if>
                <if test="updateList.btxq != null">
                    BTXQ = #{updateList.btxq,jdbcType=VARCHAR},
                </if>
                <if test="updateList.btje != null">
                    BTJE = #{updateList.btje,jdbcType=DECIMAL},
                </if>
                <if test="updateList.jfje != null">
                    JFJE = #{updateList.jfje,jdbcType=DECIMAL},
                </if>
                <!--<if test="updateList.csrq != null">
                    CSRQ = #{updateList.csrq,jdbcType=TIMESTAMP},
                </if>
                <if test="updateList.csr != null">
                    CSR = #{updateList.csr,jdbcType=VARCHAR},
                </if>-->
                <if test="updateList.btffrq != null">
                    BTFFRQ = #{updateList.btffrq,jdbcType=TIMESTAMP},
                </if>
                <if test="updateList.btffzt != null">
                    BTFFZT = #{updateList.btffzt,jdbcType=VARCHAR},
                </if>
                <if test="updateList.grzhid != null">
                    GRZHID = #{updateList.grzhid,jdbcType=VARCHAR},
                </if>
            </set>
            WHERE
            ZJBQTBTID = #{updateList.zjbqtbtid,jdbcType=VARCHAR}
        </foreach>
    </update>

拼装updateList

 for (int i = 0; i < intersectList.size(); i++) {
                                SjbdZjbQtbt sjbdZjbQtbt = (SjbdZjbQtbt) intersectList.get(i);
                                sjbdZjbQtbt.setBtffzt("0");
                                sjbdZjbQtbt.setBtjgfk("1");
                                sjbdZjbQtbt.setBtxq("8");
                                updateList.add(sjbdZjbQtbt);

                            }

此种处理方法,如果list过长会报错,所以要把大list转换为小list

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值