회원정보 수정에 관련된 기능을 구현하는데,

사용자가 입력하지 않은 값은 그대로 두고 입력한 값만 업데이트해야 했다.

 

처음에는 항목별로 다 버튼을 만들려고 했는데 그럼 너무 번거로워지는거같아서

버튼을 하나로 통합하고, 버튼을 눌렀을 때 입력하지 않은 값은 원래 값을 유지하고 입력한 값만 업데이트 되게 했다. 

 

소스코드

1
2
3
4
5
6
7
8
9
10
UPDATE  MY_TABLE
        <trim prefix="SET" suffixOverrides=",">
                <if test="name != '' "> USER_NM = #{name},</if> 
                <if test="email != '' "> USER_EMAIL_ADDR = #{email},</if>
                <if test="phone != '' "> USER_HP_NO = #{phone},</if>
                <if test="work != '' "> USER_WORK_PLACE = #{work},</if>
                <if test="major != '' "> USER_EXPERT_FIELD = #{major},</if>
                <if test="info != '' "> USER_INFO = #{info},</if>
        </trim>
        WHERE    USER_NO = #{userNo}
cs

(mybatis에서 사용함)

trim으로 ',' 문자를 제거해주는 이유는 맨 처음 if문이 거짓이면 ',' 만 남는데 그럼 오류가 발생해서

suffixOverrides 옵션으로 맨 앞에 있는 문자를 지우게했다.

+ Recent posts