[MySQL]_Mybatis 의 choose, when , otherwise 개념,사용
2022. 6. 9. 16:33ㆍ[DB]/[MySQL]_
728x90
반응형
목적 : DB Framework 인 Mybatis 를 사용하면서 자주 쓰이는 choose 문과 if문의 차이점과 개념 숙지
환경
DB : MariaDB
FrameWork : Mybatis
개념
통상적인 else if 와 같은 사용법입니다.
<choose> 태그 의 경우 <when> 조건이 true 곳에서 멈추고 해당 쿼리만 실행 후 choose 문을 빠져나옵니다.
모든 <when>을 통과하여도 true가 나오지 않을 경우 마지막의 <otherwise> 쿼리를 실행합니다.
<otherwise> 는 생략 할 수 있습니다.
예제
<select id="test1" resultType="HashMap">
select * from table1
where bno = #{num}
AND
<choose>
<when test='selectoption == "01"'>
(OPEN_DT LIKE CONCAT('%',#{opendate},'%'))
</when>
<when test='selectoption == "02"'>
(PUT_DT LIKE CONCAT('%',#{putdate},'%'))
</when>
<otherwise>
(OPEN_DT LIKE CONCAT('%',#{opendate},'%') OR PUT_DT LIKE CONCAT('%',#{putdate},'%') )
</otherwise>
</choose>
</select>
컬럼 중 selectoption 의 값을 비교하여 참인 부분의 like 문을 실행하는 쿼리입니다.
연속된 <when> 들이 true 가 아닐 경우 마지막에 <otherwise> 를 타게 됩니다. if else 문의 else 와 같은 역활입니다.
비슷한 느낌의 <if> 절과의 차이점
<if> 태그 의 경우 조건이 맞으면 해당 쿼리를 실행하고, 아닐경우 그다음 <if> 쿼리 혹은 남은 쿼리를 이어서 실행합니다.
<choose> 의 경우 true가 발생하면 나머지는 실행하지 않는 차이점이 있습니다.
용도에 맞게 잘 선택하면 될거 같습니다.
728x90
반응형
'[DB] > [MySQL]_' 카테고리의 다른 글
Partition 이란? (0) | 2024.03.26 |
---|---|
[WITH RECURSIVE]_재귀 쿼리 사용법 (0) | 2022.06.29 |
[MySQL]_서브쿼리 개념 (feat. select , from , where) (0) | 2022.05.31 |
MYSQL_UNION , UNION ALL 차이점, 설명 (0) | 2022.05.31 |