티스토리 뷰

쿼리를 쓸 때 조건절을 동적으로 사용하는 경우가 많다.


그럴 때 문제가 되는게 연산자나 콤마의 제거이다.



그럴 때는 Mybatis의 trim 을 쓰면 된다.



1. 맨 끝에 있는 콤마(,)를 제거하는 경우



<update id="updateAuthorIfNecessary" parameterType="domain.blog.Author">

UPDATE AUTHOR

<trim prefix="SET" suffixOverrides=",">

<if test="username != null">username=#{username},</if>

<if test="password != null">password=#{password},</if>

<if test="email != null">email=#{email},</if>

<if test="bio != null">bio=#{bio},</if>

</trim>

WHERE id=#{id}

</update>



맨앞에 SET을 붙이고 if안에 무엇이 들어가도 맨 끝에 있는 콤마를 지우겠다는 것이다.




2. 맨 앞에 있는 연산자를(AND 또는 OR) 제거하는 경우


<select id="selectInfo" parameterType="domain.blog.Author" resultType="authorResultMap">

 SELECT * FROM AUTHOR

 <trim prefix="WHERE" prefixOverrides="AND |OR">

<if test="username != null>AND username=#{username}</if>

<if test="password != null>OR password=#{password}</if>

<if test="email != null>AND email=#{email}</if>

</trim>

</select>


앞에 들어가는 AND 또는 OR을 제거하겠다는 것이다.


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함