2018/05/07 15:08

동적쿼리에 관하여 Dev

이번 연휴 기간동안 깨달은 바가 있어 오랜만에 블로그에 글을 올린다.


동적 쿼리? 그냥 변수만 던져줘서 변수에 맞게 조회하면 그게 동적 쿼리 아니야?


너무나 무지한 소리를 내뱉고 퇴근한 게 지난 금요일이었다.


동적 쿼리는 변수 뿐만이 아니라 쿼리문 자체가 유동적으로 적용될 수 있어야 한다.


우선 그전에 변수 관련해서 한 가지 배운 점은, 변수를 넘겨 받을 때 #{변수} 를 이용하지만, 참조하는 필드값도 변수로 전달하는 경우에는 ${변수}를 이용해야 한다,


${변수} = #{변수};


동적쿼리를 구현하는 방법에는 여러가지가 있겠지만, 나는 trim을 이용하였다.


select ~~ from {DB} 뒷부분에 where 조건절을 넣기 전, 아래의 설정을 적용한다.


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


그 후, if 절을 응용하여 쿼리를 적용한다. 예를 들어,


<if test="word != null and word != ''">

         ${option} = #{word} 

 

word 값이 공백이거나, 빈값이 아닌 경우 option 필드를 word로 조회한다. 


물론 두 가지 조건에 해당된다면 해당 쿼리는 이뤄지지 않는다.



덧글

댓글 입력 영역


skin by mater