0. 동적쿼리
MyBatis에서는 동적 쿼리의 처리를 위한 구문을 제공하고 있다. 여기서 동적 쿼리란 들어오는 데이터의 조건에 따라 질의문의 형식이 바뀌는 것을 말한다.
1. WHERE절의 동적쿼리
내 경우에는 질의문의 WHERE절에서 동적 쿼리를 사용하는 경우가 잦다. 게시판에서 검색 기능을 구현할 때가 가장 대표적인 예이다. 게시판의 검색 기능은 사용자가 사용할 수도, 사용하지 않을 수도 있는데 검색 기능을 사용할 때는 조건절에 검색을 위한 구문이 실행되어야 한다.
<select id="list" parameterType="pageVo" resultType="boardVo">
WITH B AS (
SELECT ROW_NUMBER() OVER(ORDER BY BOARD_ID DESC) RNUM,
A.BOARD_ID, A.BOARD_TITLE, A.BOARD_CONTENT, A.MEM_ID,
TO_CHAR(A.BOARD_DATE, 'YYYY-MM-DD HH24:MI') BOARD_DATE
FROM BOARD A
<where>
<if test="stype != null and stype != ''">
<if test="sword != null and sword != ''">
${stype} LIKE '%' || #{sword} || '%'
</if>
</if>
</where>
)
SELECT *
FROM B
<![CDATA[
WHERE B.RNUM >= #{start}
AND B.RNUM <= #{end}
]]>
</select>
* 동적 쿼리를 위한 구문
| <where> | - 조건절의 동적처리를 위한 구문 - <where> 안에 내용이 있을 경우 질의문에 WHERE절이 추가되지만 없을 경우 사용하지 않음 |
| <if> | - 데이터의 형태에 따라 동적 처리하기 위한 구문 - 위의 경우에는 parameterType의 변수에 데이터가 있는지 검사하고 있다. - 데이터가 없을 경우 <if> 안에 작성된 구문은 실행되지 않으며, <where> 또한 작동하지 않는다. |
* <![CDATA[ '내용' ]]>
xml 파일의 특성상 원래 꺽쇠기호는 사용할 수 없다. 하지만 조건식인 <, >, <=, >= 등을 사용해야할 때가 있다. 이럴 때는 <![CDATA[ ]]> 으로 감싸주어 해당 구문은 요소가 아닌 데이터임을 명시해야 한다.
'웹 개발 > 웹 개발' 카테고리의 다른 글
| 부트스트랩 드롭다운 메뉴 (0) | 2023.02.02 |
|---|---|
| AJAX를 사용한 파일 업로드 (0) | 2023.02.02 |
| Mybatis - 1 : N의 조회 (0) | 2023.01.31 |
| Mybatis 다중행 삽입 (0) | 2023.01.30 |
| WHOIS OpenAPI를 활용한 클라이언트 접속 국가 확인 (0) | 2023.01.24 |