[Mybatis] <if> 절을 이용한 Dynamic SQL 구현 (단일 조건)

반응형
반응형

안녕하세요. 오늘은 마이바티스를  활용하여 간단한 단일 조건문을 구성하는 방법을 소개하겠습니다.

 

이전에 포스팅했던 choose, when, otherwise를 구성하여 복합적으로 작용하는 dynamic sql을 구현하는 방법을 작성했었는데요.

sas-study.tistory.com/383

<if> 절은 상당히 간단하면서도 <when> 절과 거의 똑!같!이! 사용된다고 보시면 됩니다.

 

일단 보시죠!

 

 


 

구조 및 사용법

select *
from tableA
where deleted = false
<if test="a != null">
	and a = #{a}
</if>
<if test="b != null">
	and b = #{b}
</if>

일단 가장 일반적으로 활용하는 경우는 select 문의 where 절의 조건으로 넘어온 파라미터의 not null 여부에 따라서 조회 조건에 추가할 지 말지를 결정하는 경우가 있다.

 

예컨데 리스트 검색의 경우 keyword가 "" 빈문자열로 넘어오는 경우에는 다음과 같이 처리할 수 있다.

select *
from tableA
where deleted = false
<if test="keyword != null and keyword != "">
	and keyword = #{keyword}
</if>

keyword가 null 인지 null이 아니라면 빈문자열인지 확인하고 검색할 수 있도록 단순하게 구성할 수 있습니다. choose when 같은 복잡한 구조를 통해 xml 파일이 지저분하게 길어지는게 싫다면 선택할 수 있는 간단한 선택지로 여겨집니다.

 


 

그리고 가장 먼저 if 하면 떠오르는 상대 키워드는 else 일 것입니다. 하지만.. 마이바티스에서는 if는 단독으로만 생존하고 파트너는 존재하지 않습니다. 즉, <if test=""> 절은 test의 조건에 의해서만 결정이 되며 "그 외"에 해당하는 else가 제공되는 문법이 아닙니다. 만약 default 혹은 else 조건이 필요하다면 <choose>문의 <otherwise>를 활용하시어 개발하시는 것을 추천드립니다.

 

감사합니다!

반응형

댓글

Designed by JB FACTORY