예를 들어 게시판에서 검색 기능을 구현할 때 다음의 요소가 조합되어 구현될 수 있다.
- 검색 기준(keytype): 글쓴이(writer), 제목(title), 내용(content)
- 검색어(keyword)
- 정렬 기준(orderby): 글쓴이(writer), 제목(title), 조회수(view_cnt)
- 정렬 방향(orderbydir): 오름차순(asc), 내림차순(desc)
예를 들어 검색 기준을 select 태그로 나타내면 다음과 같을 것이다.
<select name="keytype">
<option value="title">제목</option>
<option value="writer">글쓴이</option>
<option value="content">내용</option>
</select>
이 때, 검색 기준, 정렬 기준, 정렬 방향은 여러 가지의 옵션이 있으며, 각 옵션을 선택할 때마다 SQL 쿼리문이 달라져야 한다. 이렇게 여러 조건에 대응하여 동적으로 SQL 쿼리문을 생성하는 것을 동적 SQL 쿼리라고 한다.
MyBatis에서는 다음과 같이 태그를 사용하여 구현이 가능하다.
SELECT * FROM ...
<if test="keytype != 'none'">
WHERE ${keytype} = #{keyword}
</if>
<if test="orderby != 'none'">
ORDER BY ${orderby} ${orderbydir}
</if>