Java 动态sql一条语句实现批量修改

这篇博客介绍了如何使用DAO层的方法批量更新用户信息,具体涉及一个XML更新语句,该语句通过CASE WHEN结构分别更新用户年龄和地址,根据用户ID进行条件匹配。执行结果显示,更新操作会根据传入的用户ID列表,逐条设置用户的年龄和地址,并在WHERE子句中拼接所有ID,实现批量更新。

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

  1. DAO层
Integer updateUserList(
			@Param(value = "list") List<Integer> userIdList);

2.xml语句

<update id="updateUserList">
        UPDATE user_info
        <trim prefix="set" suffixOverrides=",">
            <trim prefix="age=case" suffix="end,">
                <foreach collection="list" item="cus">
                    WHEN user_id =#{cus.userId}   THEN #{cus.age}
                </foreach>
            </trim>
            <trim prefix="address=case" suffix="end,">
                <foreach collection="list" item="cus">
                    WHEN user_id =#{cus.userId}   THEN #{cus.address}
                </foreach>
            </trim>
        </trim>
        <where>
            <foreach collection="list" separator="or" item="cus">
                user_id =#{cus.userId}
            </foreach>
        </where>
    </update>

3.执行输出

UPDATE user_info 
SET age =
CASE
	WHEN user_id = 30069 THEN 18 
	WHEN user_id = 30068 THEN 20 
END,
	address =
CASE
	WHEN user_id = 30069 THEN '浙江杭州' 
	WHEN user_id = 30068 THEN '四川成都' 
END
	WHERE user_id = 30069 OR user_id = 30068
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值