728x90
반응형
CDATA는 무엇인가?
CDATA -> Character Data
문자열을 의미한다.
CDATA , 왜 사용하죠?
쿼리문에서 특수문자, 비교연산자를 사용하는 경우가 있는데 이를 MyBatis에서 사용할 경우
오류가 나는 경우가 많다.
이 때문에 태그 안의 내용을 모두 문자열로 치환시켜 버리는 CDATA를 자주 사용한다.
예시
<select id="findAllProduct" resultMap="ProductMap">
SELECT
PDCT_NAME
,PDCT_PRICE
,PDCT_STATUS
FROM TB_PRODUCT
WHERE PDCT_PRICE > 1000
</select>
해당 쿼리에서 비교연산자인 '>' 가 닫힘 태그로 인식되어서 에러가 발생한다.
CDATA, 어떻게 사용하나요?
사용 예시를 통해서 알아보자.
1. 비교연산자인 '>'만 CDATA 태그로 감싸서 사용할 수 있다.
<select id="findAllProduct" resultMap="ProductMap">
SELECT
PDCT_NAME
,PDCT_PRICE
,PDCT_STATUS
FROM TB_PRODUCT
WHERE PDCT_PRICE <![CDATA[>]]> 1000
</select>
2. 쿼리문 전체를 감싸서 사용할 수 있다.
<select id="findAllProduct" resultMap="ProductMap">
<![CDATA[
SELECT
PDCT_NAME
,PDCT_PRICE
,PDCT_STATUS
FROM TB_PRODUCT
WHERE PDCT_PRICE > 1000
]]>
</select>
3. 조건 태그에서 사용할 수 있다.
<select id="findAllProduct" resultMap="ProductMap">
SELECT
PDCT_NAME
,PDCT_PRICE
,PDCT_STATUS
FROM TB_PRODUCT
WHERE 1=1
<if test='pdctName != null and pdctName != ""'>
<![CDATA[
AND PDCT_NAME = #{pdctName}
]]>
</if>
<if test='pdctPrice != 0'>
<![CDATA[
AND PDCT_PRICE > 1000
]]>
</if>
</select>
728x90
반응형
'MyBatis' 카테고리의 다른 글
[MyBatis] 바인딩 ${}, #{} (2) | 2024.09.01 |
---|---|
[MyBatis] <selectKey> 란? (0) | 2024.08.18 |
MyBatis <choose> 태그 사용법 및 <if> 태그와의 차이 (0) | 2024.08.04 |
MyBatis <if> 태그 사용법 (0) | 2024.08.03 |
SpringBoot 프로젝트에서 MyBatis 설정하기 (0) | 2024.07.30 |