2012/06/14 09:34

myBatis의 trim의 힘! ORM/myBatis



화면을 작성중에 이런화면이 있었다.
제목과, 내용과, 작성자 동시에 한 질의어로 검색하는거.. 

머 어렵지 않다.. 

그중에 OR를 넣는 타이밍을 어떻게 간소화해서 할까,,
고민을 많이 했는데.. 
TRIM이라는 효자가 있었다.ㅋ

완전 대박!! 

TRIM안에 쿼리가 있으면 자동으로 설정해놓은
prefix, suffix 값을 붙여주고,
혹시 필요없으면 prefixOverrides와 suffixOverrides를 통해 제외가 가능하다. 

예를 보면 쉬울 듯하다.. 

내가 작성하고픈 쿼리는 

WHEREPJ_NO = '00000000000000'
     AND BB_TP = '0'
     AND (TT LIKE '%' || '
질의어' || '%'
             
OR DS LIKE '%' || '질의어 ' || '%'
             
OR WRT_MPR_NM LIKE '%' || '
질의어 ' || '%' )


위와 같았다..


위에서 빨간색으로 표시한 부분을 어떻게 동적으로 생성하느냐가 관건이었는데,

물론 간단하게 말이다.. 

trim을 쓰면 된다.. 


<trim prefix="AND (" prefixOverrides="OR" suffix=")">

<if test="searchCategory0 != null"> 

OR TT LIKE '%' || #{searchContent} || '%' 

</if>  

<if test="searchCategory1 != null"> 

OR DS LIKE '%' || #{searchContent} || '%' 

 </if>

 <if test="searchCategory2 != null"> 

  OR WRT_MPR_NM LIKE '%' || #{searchContent} || '%' 

 </if>

</trim>


얼마나 쉬운가!!


오늘도 하나 배워간다~~~ 유후~


덧글

댓글 입력 영역