반응형

@notepad_jj2

츄르사려고 코딩하는집사입니다.


IBatis / MyBatis에서 mapper.xml의 코드를 짜다가 보면 '<', '<='. '>', '>=', '<>' 등을 많이 사용해야 하는 경우가 있습니다. 오라클이나 Mysql에서 사용할 때는 위의 비교 연산자를 사용할 수 있지만, XML에서 비교 연산자를 사용하려고 하면 인식을 하지 못합니다. 이 경우에 사용하는 것이 CDATA입니다.

 

1. CDATA

CDATA는 Character Data로, 문자 데이터를 뜻합니다. 정확한 의미로는 Unparsed Character Data로 파싱되지 않는 문자 데이터를 말합니다. 위처럼, CDATA는 비교연산자 등을 사용하기 위해 XML에서 사용을 합니다.

 

예를 들어, 아래의 XML 코드를 봅시다.

<select id="WOW" parameterClass="Map" resultClass="DataMap">
      SELECT *
        FROM TEST
       WHERE A > 100
</select>

 

WHERE A > 100 에서 '>' 이 기호는 파싱을 하기 때문에 닫힘 태그로 인식을 하여 에러가 발생하게 됩니다.

그렇기에, 위의 에러 발생을 방지하기 위해 CDATA를 사용합니다.

 

2. CDATA 사용 방법

CDATA의 형식은 아래와 같습니다.

<![CDATA[]]>

 

<![CDATA[ABC]]> 이 구문에서 파싱되고 싶지 않는 데이터를 ABC가 적힌 곳에 넣으면 됩니다.

 

예를 들어, 아래의 코드를 봅시다.

 

위의 코드에서 '>' 이 기호를 CDATA로 감싸줍니다.

즉, <![CDATA[>]]>를 사용하면 됩니다.

<select id="WOW" parameterClass="Map" resultClass="DataMap">
      SELECT *
        FROM TEST
       WHERE A <![CDATA[>]]> 100
</select>

 

더 나아가, 비교 연산자 뿐만 아니라 쿼리를 넣어도 됩니다.

아래의 코드처럼 WHERE절에 있는 조건문 1개를 넣어도 되고,

<select id="WOW" parameterClass="Map" resultClass="DataMap">
      SELECT *
        FROM TEST
       WHERE <![CDATA[A > 100]]>
</select>

 

쿼리 전체를 감싸줄 수도 있습니다.

<select id="WOW" parameterClass="Map" resultClass="DataMap">
      <![CDATA[
      SELECT *
        FROM TEST
       WHERE A > 100
       ]]>
</select>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기