본문 바로가기
SQL/Mybatis Framework

[Mybatis] update 문 parametertype 을 map 으로 받아 foreach 처리하는 방법

by 지구 2020. 5. 18.

서비스를 하다가, 모든 유저의 이름을 '홍길동' 으로 바꿔야 할때.
그 객체를 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 으로 굳이굳이 전달해야 한다면 이 방법을 참고하세요 :)

반응형

댓글