본문 바로가기
Error & Fix

Mybatis CDATA 사용법 및 예제

by wakestand 2020. 3. 10.
반응형

위 예제를 보면

Mybatis에서 TB1 테이블에서 AGE가 15 이상인 값을 가져오는 쿼리인데

쿼리를 돌려보면 자연스럽게 에러가 난다

 

Mybatis에서 <, >, ||, &&같은

특수문자를 사용할 경우에

 

위에 쓴 내용을 문자열이 아닌

XML 태그로 인식하기 때문에 에러가 나는 것이다

 

따라서 문자열로 바꿔준 후 사용해야 하는데

그때는 CDATA를 사용해주면 된다

 

<![CDATA[ 쿼리 ]]>

이런 식으로 쿼리를 감싸면

<, >, ||, &&이 문자로 인식되어 사용 가능해진다

 

다음으로 IF와 CHOOSE같은 조건문 사용시에는

SQL 전체를 감싸는 것이 아니라

위와 같이 부분적으로 감싸주면 된다

 

예제에 사용한 코드는 아래와 같다

 

<select id="test" resultMap="TestVO"> 

	<![CDATA[
		SELECT NAME, AGE
		  FROM TB1 
		 WHERE AGE > 15
	]]>
	
</select>

 

<select id="test" resultMap="TestVO"> 

	<![CDATA[
		SELECT NAME, AGE, ADR
		  FROM TB1 
		 WHERE AGE > 15
	]]>
	<if test="ADR != null ">
		   AND ADR <![CDATA[ > ]]> 30
	</if>
	
</select>
반응형

댓글