やりたいこと
- mapperメソッドのパラメータにListを渡す
- SQL内でプレスホルダーとして使用する
やったこと
mapper.java
public interface Mapper {
int updateUsers(@Param("params")List<UpdateUser> params);
}
UpdateUser.java
@Data
public class UpdateUser {
private int id;
private String name;
private String address;
}
mapper.xml
<update id="updateUsers">
UPDATE
users
SET
name = CASE id
<foreach collection="params" item="param">
WHEN #{param.id} THEN #{param.name}
</foreach>
END,
address = CASE id
<foreach collection="params" item="param">
WHEN #{param.id} THEN #{param.address}
</foreach>
END
WHERE
id IN
<foreach collection="params" item="param" open="(" separator="," close=")">
#{param.id}
</foreach>
</update>