티스토리 뷰

DB

CDATA

wldnjd2 2022. 9. 14. 17:37

CDATA = Character DATA, 즉 문자형 데이터를 말함.

 

마이바티스에서 쿼리를 짤때 괄호나 특수문자를 XML parser로 인식하지 않고 문자열로 인식한다.
SELECT문에는 조건을 걸어 쿼리하기 위해 <, >, = 등의 기호를 많이 사용하는데, 이것이 파싱 중에 태그로 인식되거나 하는 등의 문제가 생길 수 있다. 

 <![CDATA[  ]]> 안에 원하는 쿼리문을 선언 한다면, 파싱하지 않고 그대로 문자열로 인식 시킬 수 있어 이런 문제를 예방할 수 있다.

동적 SQL에서는 사용하지 못하는데, 필요한 특수문자에 한해서만 적용시키면 동적 SQL에서도 사용 가능하다.

 

 

 

따라서 쿼리에 <> & || 와 같은 부등호를 사용시 

 

 

<![CDATA]

선언 후 사용해야한다.

 

 

<![CDATA[
  쿼리 작성
]]>

 

 

아래는 예시

 

<![CDATA[
   AND actn_ymd < to_timestamp(#{actn_ymd_ed, jdbcType=VARCHAR}, 'YYYY-MM-DD') + '1 day'
]]>

 

 

 

 

 

 

 

Ref


https://java119.tistory.com/70

 

[MyBatis] CDATA 사용하기(feat.<> 괄호,특수문자 문자열로 인식하기)

CDATA ( <![CDATA[..]]> ) 개념 쿼리를 작성할 때, '<', '>', '&'를 사용해야하는 경우가 생기는데 xml에서 그냥 사용할 경우 태그로 인식하는 경우가 종종 있다.. 이럴 경우 에러를 뱉어내기 때문에 '태그

java119.tistory.com

 

 

'DB' 카테고리의 다른 글

형변환하기 ::  (0) 2023.01.10
[Postgresql] 형변환  (0) 2022.09.27
boolean의 jdbcType  (0) 2022.09.27
[정렬] order by (형변환)  (0) 2022.09.07
페이징 처리 (Oracle, Postgresql, Limit, Fetch, Offset, Rnum)  (0) 2022.08.24
댓글