# Mybatis 동적태그
<if> ( 기존 ibatis의 isEqual, isNull, isEmpty, isNotEmpty 등을 하나로 )
WHERE 1=1
<if test="empId != null">
AND_ID = #{empId}
</if>
<choose>, <when> <otherwise> ( 오라클의 case문과비슷 )
WHERE 1=1
<choose>
<when test="searchCondition == 'title' ">
AND TITLE LIKE #{title}
</when>
<when test="searchCondition == 'content' ">
AND TITLE LIKE #{content}
</when>
<otherwise>
AND DEL_YN = 'N'
</otherwise>
<where>, <trim> ( 조건에따라 where절 추가할때 )
SELECT COUNT(*) FROM 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> 배열타입의 파라미터를 받을때
AND EMP_ID IN
<foreach item="empIdArray" index="index" collection="list" open="(" separator="," close=")">#{item}
</foreach>
배열의 값을 빼내어 콤마로 구분하여 괄호안에넣음
=> ('11', '22', '33' )
<bind> 변수를 만드는 태그
<bind name="searchKeyword" value=" '%'+title+'%' " />
SELECT *
FROM BOARD
WHERE TITLE LIKE #{searchKeyword}
title파라미터를 받아 searchKeyword라는 변수에 저장하고 이를 쿼리에서 사용