MyBatis
CDATA Section
Kimjoy
2023. 10. 7. 18:09
SQL문을 작성하다보면 구문에 "<" 기호가 사용되는 경우가 있다. 하지만 "<" 기호를 사용하게 되면 에러가 발생한다.
이유는 XML파서가 XML파일을 처리할 때 "<"를 "<"연산자가 아닌 또 다른 태그의 시작으로 처리하기 때문이다. 결국 Mapper 파일에 등록된 SQL구문에서는 "<", ">"와 같은 기호를 사용하면 에러가 발생한다.
이럴 때는 CDATA Section으로 SQL구문을 감싸주면 에러가 발생하지 않는다.
<select id="detailBoard" parameterType="BoardVO">
select num, title, content
from board
where num <= #{num}
</select>
=> 이렇게 작성하면 오류발생
<select id="detailBoard" parameterType="BoardVO">
select num, title, name, content
from board
<![CDATA[where num<=#{num}]]>
</select>
CDATA Section은 XML 고유의 문법으로서, CDATA 영역에 작성된 데이터는 단순한 문자데이터이므로 XML파서가 해석하지 않도록 한다. 결국 CDATA Section안에 작성된 데이터는 XML파서가 처리하지 않고 데이터베이스에 그대로 전달하므로 문제가 발생하지 않는다.