프레임워크(Framework)/Mybatis

[Mybatis] 마이바티스 <![CDATA[]]> 사용

잇트루 2023. 4. 18. 08:58
반응형

CDATA

CDATA는 XML에서 사용되며, 문자 데이터(Character DATA)를 의미한다. XML 파일에서 사용되는 마크업 문법으로부터 영향을 받지 않게 하기 위해 사용한다.

  • 파싱하는 문자 : PCDATA
  • 파싱하지 않는 문자 : CDATA
<![CDATA[]]>
  • [] 안에 문자를 삽입하여 문자열 그대로 인식하도록 할 수 있다.

 

CDATA를 사용하는 이유

마이바티스에서 사용되는 Mapper는 XML로 작성되어 있어 문자가 XML 표준으로 파싱된다.

Mapper에는 SQL 쿼리문이 작성될 것이고, 해당 쿼리에는 <, >, = 등의 기호를 많이 사용하게 된다.

이때 사용된 기호들이 파싱 중에 xml 태그로 인식되는 등의 문제가 발생할 수 있다.

이러한 문제를 방지하기 위해 CDATA를 사용한다.

 

CDATA 사용

<select id="test parameterType="Map" resultType="com.test.Test">
	SELECT * FROM MEMBER
	WHERE MEMBER_ID < 5 <-- 문제 발생 !--> 
</select>
  • WHERE 절의 ‘<’ 문자가 XML의 태그로 인식되어 쿼리가 제대로 실행되지 않는 문제가 발생한다.

 

<select id="test parameterType="Map" resultType="com.test.Test">
	SELECT * FROM MEMBER
	WHERE MEMBER_ID <![CDATA[ < ]]> 5 <-- 문제 해결 !--> 
</select>
  • <![CDATA[ < ]]와 같이 CDATA로 감싸면 ‘<’ 문자를 파싱하지 않고 그대로 사용하여 정상적으로 쿼리가 실행된다.
반응형