728x90
반응형
if - iBatis 의 isEqual, isNotEqaul, isNull, isNotNull, isEmpty, isNotEmpty 를 하나로
WHERE 1=1
<if test="empId != null">
AND EMP_ID = #{empId}
</if>
※ if문 사용 시 주의점
<if test="name.equals('kim')"></if> // 정상 작동하지 않음
<if test='name.equals("kim")'></if> // 정상 작동
choose, when otherwise - case문 과 같이 케이스에 따라 조건이 달라질 때
WHERE 1=1
<choose>
<when test = "searchCondition == 'title'">
AND TITLE LIKE #{title}
</when>
<when test = "searchCondition == 'content'">
AND CONTENT LIKE #{content}
</when>
<otherwise>
AND DEL_YN = 'N'
</otherwise>
where, trim - iBatis의 dynamic과 같이 조건에 따라 where절을 추가할 때 사용
SELECT COUNT(*)
FROM MST_USER
<trim prefix="WHERE" prefixOverrides="AND|OR">
<if test="id != null">
AND USER_ID = #{id}
</if>
<if test="pw != null">
AND USER_PW = #{pw}
</if>
</trim>
trim 태그를 위와 같이 사용하면 맨 첫번째 AND나 OR을 WHERE로 바꾸게 된다.
set - 동적으로 update 구문을 만들 때 사용
UPDATE MST_USER
<set>
<if test="email != null">
EMAIL = #{email},
</if>
<if test="address != null">
ADDRESS = #{address},
</if>
<if test="phone != null">
PHONE = #{phone},
</if>
</set>
WHERE USER_ID = #{id}
동적으로 set 키워드를 붙히고 불필요한 콤마를 제거한다.
<trim prefix="SET" suffixOverrides=",">
<trim>
와 같다.
foreach - 배열 타입의 파라미터를 받을 때 사용
배열이나 리스트의 경우 parameterType="Map" 으로 설정하고,
List일 경우 collection="list"
Array일 경우 collection="array" 로 설정
List나 Array의 경우 Mybatis 내부단에서 Map으로 치환해준다.
배열의 값을 빼내어 콤마로 구분하여 괄호 안에 넣어주게 됨 ex) ('111', '222', 333', '444')
collection : parameter로 받은 배열변수의 명칭
item : collection의 alias
<trim prefix="WHERE" prefixOverrides="AND|OR">
<if test="empIdArray != null">
AND EMP_ID IN <foreach item="empIdArray" index="index" collection="list" open="(" separator="," close=")">#{item}</foreach>
</if>
bind - 변수를 만드는 태그
<bind name="searchKeyword" value="'%'+title+'%'"/>
SELECT *
FROM BOARD
WHERE TITLE LIKE #{searchKeyword}
title 파라메터를 받아 searchKeyword라는 변수에 저장하고 이를 쿼리에서 활용할 수 있다.
728x90
반응형
'SQL' 카테고리의 다른 글
[MySQL] CONCAT & GROUP_CONCAT (0) | 2023.02.13 |
---|---|
[SQL] DELETE, TRUNCATE, DROP 차이점 (0) | 2022.11.01 |
[SQL] INSERT, UPDATE, DELETE (0) | 2022.11.01 |
[MySQL] LEFT JOIN, RIGHT JOIN, INNER JOIN, UNION (0) | 2022.11.01 |
[MyBatis] INSERT시 키 값 바로 가져오는 방법(auto_increment) (0) | 2022.11.01 |