서비스를 하다가, 모든 유저의 이름을 '홍길동' 으로 바꿔야 할때.
그 객체를 Map 으로 가지고 있는 경우에 대해 포스팅하겠습니다.
(위에서 언급한 '그' Map 객체)
// Map 구조 (id:userName}
'hajs' = {'홍길동'},
'user01' = {'홍길동'},
'user02' = {'홍길동'};
우선 Mapper 에서 param 을 Map 으로 전달해주고,
void updateUserName(@param("userNameMap") Map<Integer, String> userNameMap);
xml 에서는 (아래처럼) update 문에 foreach 돌리면서 처리하면 된다.
<update id="updateUserName" parameterType="hashMap">
UPDATE
user
SET
user_name =
CASE
<foreach index="userId" item="userName" collection="userNameMap">
WHEN user_id = #{userId} THEN #{user_name}
</foreach>
END
WHERE
use_yn = 'Y'
</update>
UPDATE 문을 parameter 로 Map 으로 굳이굳이 전달해야 한다면 이 방법을 참고하세요 :)
반응형
'SQL > Mybatis Framework' 카테고리의 다른 글
[Mybatis] entity mapping to camel case (0) | 2021.07.13 |
---|---|
[MyBatis] PK가 없으면 INSERT, 있으면 UPDATE -> LIST 로 처리하기 (0) | 2020.04.02 |
[MyBatis] #{} 와 ${} 의 차이 (0) | 2020.04.02 |
[MyBatis] SqlSessionFactoryBean 속성 정리 (0) | 2020.01.08 |
마지막에 추가한 데이터의 index 가져오는 방법 (0) | 2018.07.19 |
댓글