본문 바로가기
MyBatis

CDATA Section

by Kimjoy 2023. 10. 7.

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파서가 처리하지 않고 데이터베이스에 그대로 전달하므로 문제가 발생하지 않는다.

'MyBatis' 카테고리의 다른 글

동적 SQL  (1) 2023.10.08
ResultMap  (0) 2023.10.07
바인딩변수를 이용한 SQL문  (0) 2023.10.06
MyBatis 프레임워크  (3) 2023.10.06
mybatis-config.xml 설정파일  (1) 2023.08.07