可一次修改数据库多条数据 foreach 的使用

本文介绍了一种使用MyBatis的foreach标签批量更新数据库多条记录的方法,通过List参数类型实现高效的数据更新操作,适用于需要对大量数据进行快速修改的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

可一次修改数据库多条数据 foreach 的使用
xml语句

    <update id="updateMltjb" parameterType="List" >
        <foreach collection="list" index="index" item="data1" separator=";">
            update  dw_factgrossprofit set
            <trim prefix="" suffixOverrides="," >
                <if test="data1.item_sname != null">
                    item_sname = #{data1.item_sname},
                </if>
                <if test="data1.fact_a != null">
                    fact_a = #{data1.fact_a},
                </if>
                <if test="data1.fact_b != null">
                    fact_b = #{data1.fact_b},
                </if>
                <if test="data1.fact_c != null">
                    fact_c = #{data1.fact_c},
                </if>
                <if test="data1.fact_d != null">
                    fact_d = #{data1.fact_d},
                </if>
                <if test="data1.fact_e != null">
                    fact_e = #{data1.fact_e},
                </if>
            </trim>
            where  nid=#{data1.nid}
        </foreach>
    </update>

mapper

   /**
     * 改
     */
    Integer updateMltjb(@Param("list")List<ExeclSupplementDto> dataList);

service

  /**
     * 改
     */
    Integer updateMltjb(List<ExeclSupplementDto> execlSupplementDtos);

serviceImpl

   @Override
    public Integer updateMltjb(List<ExeclSupplementDto> execlSupplementDtos) {
        if(Objects.nonNull(execlSupplementDtos) && !execlSupplementDtos.isEmpty()){
            return   execlSupplementMapper.updateMltjb(execlSupplementDtos);
        }
        return null;
    }

Controller

    @ResponseBody
    @RequestMapping(value = "/updateMltjb", method = RequestMethod.POST)
    @ApiOperation("统计表修改")
    public Result updateMltjb (@RequestBody List<ExeclSupplementDto> execlSupplementDtos) {
        List<ExeclSupplementDto> listDto =  Lists.newArrayList();
        try {
            for(ExeclSupplementDto execlSupplementDto:execlSupplementDtos) {
                listDto.add(execlSupplementDto);
                Integer num = execlSupplementService.updateMltjb(listDto);
                if (num == 0) {
                    execlSupplementService.insertMltjb(listDto);
                }
                listDto.clear();
            }
            return new Result(200, "请求成功");
        } catch (Exception e) {
            e.printStackTrace();
            return new Result(0, "请求失败");
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值