본문 바로가기
MyBatis

[MyBatis] <![CDATA[ ]]> 사용해서 부등호 처리하기

by 네모세모동동 2025. 3. 6.

MyBatis를 사용하다보면 비교연산자(부등호 등)를 사용해서 쿼리문을 작성할 때 만날 수 있는 ⚠️ 에러이다.

 

The content of elements must consist of well-formed character data or markup.

 

비교연산자를 태그로 인식해서 발생하는 에러이다!

이 에러를 피하는 방법은 두가지가 있다.✌️

 

 

1. CDATA 사용하기

CDATA가 파싱되지 않고 문자열을 문자 그대로 인식할 수 있도록 설정해준다.

 

CDATA는 <![CDATA[ 🙋‍♂️🙋‍♀️ ]]> 로 부등호나 쿼리문을 감싸주면 된다.

 

/* 부등호에 사용하기 */
SELECT *
  FROM TB_ORDER
 WHERE ORDER_DT <![CDATA[<]]> #{calFrom}
 
 
 /* 쿼리문에 사용하기1 */
 SELECT *
  FROM TB_ORDER
<![CDATA[ WHERE ORDER_DT < #{calFrom} ]>
 
 
 /* 쿼리문에 사용하기2 */
 <![CDATA[
     SELECT *
      FROM TB_ORDER
     WHERE ORDER_DT < #{calFrom}
 ]>

 

 

🚨CDATA를 사용하면서 주의할 점🚨

동적 쿼리문을 생성하는 경우에는 비교연산자가 사용된 코드에만 사용해야한다.

CDATA에 의해 감싸져 있으면 동적쿼리를 사용할 수 없다!

 

 

 

 

2. 문자엔티티 사용하기

부등호 대신 &lt;&gt; 를 사용하면 된다.

< ➡️ &lt; 
> ➡️ &gt;

 

하지만 이 경우에는 가독성이 떨어지기도 하고

lt, gt 헷갈릴 수 있으니 CDATA를 사용하는 것을 추천한다!😉

 

 


[참고]

'MyBatis' 카테고리의 다른 글

[MyBatis] 샵#{} 과 달러${} 차이  (1) 2024.12.09
[MyBatis] if 조건절 문자열 비교하기  (0) 2024.11.11