[MYBATIS] choose 절을 이용한 DynamicSQL
MyBatis에서 choose 절을 활용한 동적 쿼리를 작성할 수 있다. 보통 특정 조건에 따라 쿼리의 형태가 다이나믹해지므로 MyBatis에서 많이 사용되는 방법으로 choose절이 있다.
<choose></choose>,<when></when>,<otherwise></otherwise>
우선 위 세가지 종류를 사용한다.
select *
from table1
where deleted = false
<choose>
<when test="a != null and a == 1">and a = 1</when>
<when test="a != null and a == 2">and a = 2</when>
<when test="a != null and a == 3">and a = 3</when>
<otherwise>
and a is not null
</otherwise>
</choose>
전체 choose 조건문의 범위를 결정하는 태그를 시작으로 의 검증부분을 통해 조건을 건다. a 라는 변수는 자바 Interface Mapper에서 넘어온 파라미터 그대로 사용할 수 있다.
태그는 else랑 비슷한 느낌이지만, 떄로는 default의 의미로 사용될 수 있다. 위 쿼리처럼 존재하는지 여부만 확인할 경우 default값을 is not null로 설정할 수도 있다.
그리고 mybatis의 특징으로 태그의 내부는 모든 태그가 들어올 수 있다. 또, when 절 안에 if 절로 세분화가 가능하고,foreach 절을 사용해서 loop를 돌릴 수도 있다.
select *
from tableA
where deleted = false
<choose>
<when test="a != null and a.length > 0">
and a in <foreach item="a" collection="a_list" open="(" seperate="," close=")">#{a}</foreach>
</when>
<otherwise>
and a is not null
</otherwise>
</choose>
Author And Source
이 문제에 관하여([MYBATIS] choose 절을 이용한 DynamicSQL), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@rdj1014/MYBATIS-choose-절을-이용한-DynamicSQL저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)