myBatis 에서 XML 쿼리 사용시 (예, <, >, \ ) 사용 시 <![CDATA[]]> 로 특수문자를 감싸지 않으면 쿼리 사용 시 에러가 발생한다.
태그내 존재하는 <tag> 꺽쇠랑 동일하기 때문에 혹은 \ 같은 경우 escape 문자로 인식하기 때문에 다음 문자를 빼고 동작하기 때문이다..
이를 해결하기 위해서 특수 문자 에 꼭 <![CDATA[]]> 로 감싸 주워야 한다.
1. CDATA 섹션
- 정의
CDATA 섹션 내의 문자나 기호는 태그 형식이나 코드로 인식하지 않고 그대로 문자 형식으로 취급 되므로 특수 문자가 많은 경우에는 CDATA 섹션을 이용하면 유용함
- 예제
<![CDATA[
SELECT * FROM HELLO WHERE A>B AND A<C
]]>
2. 사용법
- 예제
SELECT * FROM HELLO WHERE A<![CDATA[>]]>B
CDATA를 사용하지 않고 myBatis에서 사용하면, 아래와 같이 처리 된다..
SELECT * FROM HELLO WHERE A > B
3. 주의사항
A. <![CDATA['compare']]> 사이 공백 사용하면 안됨
B. CDATA 사이에 또다른 CDATA 섹년 포함 안됨
C. 키워드 CDATA는 반드시 대문자 사용
D. CDATA 섹션은 요소 컨텐츠 내 문자 데이터 어디에나 삽입 가능 (단, XML 태그 내에서는 사용불가)
'IT칼럼 > JAVA' 카테고리의 다른 글
iframe 으로 get request 이용하여 데이터 전달하기 + spring boot (0) | 2019.04.26 |
---|---|
지정된 달에서 특정요일(수, 금 ,토)에 해당하는 날짜 받아오기 (0) | 2019.04.23 |
Java - String to Integer (0) | 2019.04.19 |
SinglyLinkedList 만들기 & 처음부터 끝까지(null) data 출력하기 (0) | 2019.04.17 |
Spring Boot, PostgreSQL, JPA, Hibernate RESTful CRUD API Example (0) | 2019.04.13 |