개념
- 쿼리를 작성할 때, '<', '>', '&'를 사용해야하는 경우가 생기는데 xml에서 그냥 사용할 경우 태그로 인식하는 경우가 종종 있습니다.
- 이럴 경우 에러를 뱉어내기 때문에 '태그가 아니라 실제 쿼리에 필요한 코드'라고 알려줘야 한다.
- 그때 사용하는 것이 <![CDATA[...]]> 이다.
- 한 마디로 <>(부등호),&(앤드),||(오아) 등을 닫는 부등호가 아니라 문자열로 처리하라는 뜻입니다.
- 어렵게 말하자면 "XML parser"를 하지 말아라 이겁니다.
문법
<![CDATA[
쿼리 내용
]]>
- CDATA 안에 쿼리를 사용하면 쿼리 내용의 괄호나 특수문자를 XML parser로 인식하지 않고 "문자열"로 인식합니다.
예시
전체 쿼리 CDATA 사용
<select id="getUserList" resultMap="UserVO">
<![CDATA[
SELECT *
FROM user
WHERE id > 3
]]>
</select>
조건문 중간에 CDATA 사용
<select id="getUser" resultType="UserVO">
SELECT * FROM user
<if test="id != null">
where id <![CDATA[<]]> 3;
</if>
</select>
<select id="getUser" resultMap="UserVO">
<![CDATA[
SELECT *
FROM user
WHERE 1=1
]]>
<choose>
<when test='id != null and user_type =="1"'>
<![CDATA[
salary > 100
]]>
</when>
<otherwise>
<![CDATA[
salary < 100
]]>
</otherwise>
</choose>
</select>