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

  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
经验分享 程序员 微信小程序 职场和发展