안녕하세요. 경제적, 시간적 자유를 꿈꾸는 한량입니다.
<choose>는 스위치 문을 생성하는 데 사용되며,
이를 통해 <when> 또는 <otherwise> 조건을 선택할 수 있습니다.
<when> 태그는 조건을 지정하고,
'true'로 평가되면 해당 SQL이 실행됩니다.
<when> 조건 중 어느 것도 충족되지 않으면
<otherwise> 태그가 기본 옵션을 제공합니다.
'<if> 태그'에서 존재하지 않는 'else if' 또는 'else'에
대한 구문은 사용할 수 있게 해 줍니다.
1. <choose>, <when>, <otherwise> 태그의 구문 및 사용법
<choose>
<when test="조건식1">
<!-- 조건식1이 참일 때 실행되는 SQL -->
</when>
<when test="조건식2">
<!-- 조건식2가 참일 때 실행되는 SQL -->
</when>
<when test="조건식3">
<!-- 조건식3이 참일 때 실행되는 SQL -->
</when>
<!-- otherwise 태그는 선택사항입니다. -->
<otherwise>
<!-- 어떤 조건도 참이 아닐 때 실행되는 기본 SQL -->
</otherwise>
</choose>
<choose> 태그는 각각 고유한 조건을 갖는
여러 개의 <when> 태그를 포함시킬 수 있습니다.
<when> 조건이 하나도 충족되지 않는 시나리오에 대해
선택적 <otherwise> 태그를 포함할 수 있습니다.
2. <choose>, <when>, <otherwise> 태그의 사용 예제
<select id="getUserData" parameterType="String" resultType="User">
<choose>
<when test="userRole == 'ADMIN'">
SELECT * FROM users WHERE role = 'ADMIN'
</when>
<when test="userRole == 'MANAGER'">
SELECT * FROM users WHERE role = 'MANAGER'
</when>
<otherwise>
SELECT * FROM users WHERE role NOT IN ('ADMIN', 'MANAGER')
</otherwise>
</choose>
</select>
위 예제는 'userRole'의 값에 따라 실행되는 SQL 쿼리가 달라집니다.
'userRole'의 변수 값이 'ADMIN'이면
SELECT * FROM users WHERE role = 'ADMIN' 실행되어서
users의 테이블의 관리자만 조회됩니다.
'userRole'의 변수 값이 'MANAGER'이면
SELECT * FROM users WHERE role = 'MANAGER' 실행되어서
users의 테이블의 매니저만 조회됩니다.
'userRole'의 변수 값이 'ADMIN'과 'MANAGE'가 아닐 경우
SELECT * FROM users WHERE role NOT IN ('ADMIN', 'MANAGER') 실행되어서
users의 테이블의 일반 사용자만 조회됩니다.
'IT 소스 > MyBatis' 카테고리의 다른 글
[MyBatis] <set> - SET절에 동적으로 필드를 추가하거나 생략 (0) | 2024.02.07 |
---|---|
[MyBatis] <trim> - 특정 조건에 따라 부분적으로 SQL 코드를 생략 (0) | 2024.02.05 |
[MyBatis] <where> - 'AND'나 'OR'와 같은 연산자를 자동으로 처리 (0) | 2024.02.04 |
[MyBatis] <if> - 조건을 만족하면 SQL 코드를 생성 (0) | 2024.02.02 |
[MyBatis] 변수 #{} 와 ${} 의 차이점? (0) | 2024.02.01 |