CDATA
보통 쿼리문을 작성할 때, <>(부등호) 기호를 많이 사용한다. 예를 들어, 특정 날짜 사이의 값을 조회하고 싶은 경우가 있다.
이 쿼리문은 CREATE_AT이 '2022-06-01'와 '2022-07-01' 사이인 값들을 조회하기 위한 쿼리문이다. 그런데 쿼리문들 보면 빨간줄로 에러가 발생한 걸 볼 수 있다. 마우스를 갖다대고 에러 내용을 보면 다음과 같다.
Tag name expected
→ '태그 이름이 올 것으로 예상되는 곳에 아무것도 없다. 그러니 어서 태그 이름을 써라' 이정도로 알아들을 수 있을 거 같다.
그래서 CDATA를 사용해서 해당 '<'를 부등호가 아닌 문자열로 처리하기 위해 사용하는 것이다. 즉, 다음과 같이 추가하면 에러가 사라진 것을 볼 수 있다.
CDATA 문법
<![CDATA[
쿼리문
]]>
CDATA 안에 작성한 쿼리문의 괄호나 특수 문자는 XML parser로 인식하지 않고 "문자열"로 인식한다.
CDATA 테스트
@Test
public void CDATA_테스트(){
boardMapper.getBetweenDay().forEach(board -> System.out.println(board));
}
해당 테스트를 진행하면 CREATE_AT이 '2022-06-01'과 '2022-07-01'사이인 값들이 나올 것이다. 정말 그런지 확인해보자.
결과를 보면 의도한 대로 나온 것을 알 수 있다.
추후에 동적 쿼리문들 정리에 대해 알아보고 CDATA를 적용한 예시를 올리도록 하겠다.
▽ 도움을 주신 분들
'Mybatis' 카테고리의 다른 글
[Mybatis] ${}와 #{}의 차이가 뭘까? (0) | 2022.07.14 |
---|---|
[Mybatis] 동적 쿼리에 대해 알아보자 (0) | 2022.07.13 |
JPA와 Mybatis 차이점 (0) | 2022.06.27 |