1. if 문
# keyword 가 null 이 아니면 AND KEYWORD LIKE #{keyword}
<select id="dynamicSql" resultType="EgovMap">
SELECT * FROM MAP
WHERE POIX = '100'
<if test="keyword != null">
AND KEYWORD LIKE #{keyword}
</if>
</select>
# if문 안에서 문자열 비교
# 파라미터.equals('keyword')
# (파라미터 eq 'A'.toString())
# 파라미터 == 'A'
<if test="keyword != null and keyword.equals('서울') ">
AND KEYWORD LIKE #{keyword}
</if>
2. choose, when, otherwise
# if - else 구문 처럼 쓸 수 있다
<select id="dynamicSql" resultType="EgovMap">
SELECT * FROM MAP
WHERE POIX = '100'
<choose>
<when test="keyword != null and keyword.equals('서울')">
AND KEYWORD LIKE #{keyword}
</when>
<when test="keyword != null and keyword.equals('부산')">
AND KEYWORD LIKE #{keyword}
</when>
<otherwise>
AND KEYWORD = '경기'
</otherwise>
</choose>
</select>
3. foreach
# 마이바티스는 반복문도 가능하다
# foreach 를 사용하여 collection 에 대해 반복처리와 IN 조건에 사용한다
<select id="dynamicSql" resultType="EgovMap">
SELECT * FROM MAP
WHERE KEYWORD IN
<foreach item="item" index="index" collection="list" open="(" separator="," close=")">
#{item}
</foreach>
</select>
출처: http://dongram.tistory.com/11 [Dongram 개발]