1. <choose> , <when> 태그
<choose> 태그는 여러 조건 중 하나를 선택하여 SQL을 동적으로 생성할 때 사용함.
<when> 태그는 <choose> 내부에서 사용되며, 특정 조건이 충족될 때 SQL의 일부를 포함시키는 역할을 함.
<choose>
<when test="조건식1">
SQL 구문1
</when>
<when test="조건식2">
SQL 구문2
</when>
<otherwise>
기본 SQL 구문
</otherwise>
</choose>
- <when> 태그의 test 속성: 조건식을 지정함. 이 조건이 true로 평가되면 해당 태그 내부의 SQL 구문이 실행
- <otherwise> 태그: 모든 <when> 조건이 false일 때 실행될 기본 SQL 구문을 정의
<select id="selectEmployeesByLevel" resultType="Employee">
SELECT * FROM employees
WHERE 1=1
<choose>
<when test="selType eq 'SUPERIOR'">
AND employee_level > #{level}
</when>
<when test="selType eq 'SUBORDINATE'">
AND employee_level < #{level}
</when>
<otherwise>
AND employee_level = #{level}
</otherwise>
</choose>
</select>
직원 검색 시 선택된 유형(selType)에 따라 다른 SQL 조건을 적용함
- selType이 'SUPERIOR'이면 상위 레벨 직원을 선택
- selType이 'SUBORDINATE'이면 하위 레벨 직원을 선택
- 그 외의 경우 동일한 레벨의 직원을 선택
3. <bind> 태그
SQL 맥락에서 사용할 수 있는 새로운 변수를 생성하고 값을 할당하는 데 사용.
복잡한 표현식을 단순화하거나 반복적인 계산을 피하는데 유용
<bind name="변수명" value="표현식"/>
- name 속성: 새로 생성할 변수의 이름을 지정
- value 속성: 변수에 할당할 값을 정의하는 표현식을 지정
<select id="selectEmployeesByLevel" resultType="Employee">
<bind name="upLevelCal" value="_parameter.getUpLevel() - 1"/>
SELECT * FROM employees
WHERE level = #{upLevelCal}
</select>
직원의 상위 레벨을 계산하여 해당 레벨의 직원들을 선택하는 쿼리
- _parameter.getUpLevel()을 호출하여 현재 레벨 값을 가져옴
- 가져온 레벨 값에서 1을 뺌
- 계산 결과를 upLevelCal이라는 새 변수에 할당
- SQL 쿼리에서 #{upLevelCal}로 이 값을 사용
'MyBatis' 카테고리의 다른 글
계층 쿼리 (중첩 SELECT_mysql, CTE_mysql, CONNECT BY_oracle) (0) | 2024.09.09 |
---|---|
@변수명 := (0) | 2024.09.09 |
<sql>, <include>, <selectKey> (0) | 2024.09.09 |
<set>, <where> (0) | 2024.09.09 |
<if>, <foreach>, <trim> (0) | 2024.09.09 |