[ibatis/mybatis] 부등호 사용하기 (CDATA)
아이바티스 또는 마이바이스에서 부등호를 사용할 경우 오류가 발생할 수 있다.
이는 xml을 파싱할 때 부등호를 인식하는 과정에서 문제가 발생한 것인데,
'<', '>' 이 부등호들은 xml 문서의 태그 시작과 끝을 알리는 괄호로 인식하기 때문이다.
* 부등호를 문자열로 표현하는 방법
부등호 | 문자열 | 예제 |
< | < | select * from user where age < 20 |
> | > | select * from user where age > 20 |
<= | <e; | select * from user where age <e; 20 |
>= | >e; | select * from user where age >e; 20 |
위와 같은 방법으로 부등호 대신 직접 문자열을 이용하여 작성하는 방법이 있다.
* CDATA
일반적으로는 CDATA를 많이 사용한다.
Character DATA 의 줄임말로서, 말 그대로 파싱 하면서 문자열로 인식 시키라고 선언한다 생각하면 된다.
SELECT * FROM USER
WHERE AGE <![CDATA[<]]> 20
SELECT * FROM USER
WHERE AGE <![CDATA[>]]> 20
SELECT * FROM USER
WHERE AGE <![CDATA[<=]]> 20
SELECT * FROM USER
WHERE AGE <![CDATA[>=]]> 20
쿼리 전체를 CDATA로 감싸서 사용하는 경우도 있고, 부등호를 사용하는 경우에만 CDATA를 사용하는 경우도 있다.
특히나 나는 부등호 중에서도 태그를 여는 '<' 의 경우에만 <![CDATA[ < ]]> 과 같이 사용하는 편이다.
등호나 태그를 닫는 '>' 의 경우는 굳이 문자열 데이터라고 인식시켜주지 않아도 된다.
최근댓글