2021-12-11
마이바티스 또는 아이바티스에 부등호가 존재하는 쿼리를 옮겨 사용 시 오류가 발생하는 경우가 있다. 이는 부등호를 mapper에서 인식하는 과정에서 문제가 발생하는 것인데 이를 해결하는 방법을 알아보자.
- 비교 표현식
비교표현식이란, 부등호를 문자열로 표현한 것을 말하는데, 형식은 아래와 같다.
부등호 | 문자열 | 예제 |
> | < | select * from where age < 25 |
< | > | select * from where age > 25 |
<= | <e; | select * from where age <e; 25 |
>= | >e; | select * from where age >e; 25 |
위와 같은 방법을 사용할 수 있다. 다만 비교 표현식의 경우 가끔 시 tomcat server 빌드 중 오류가 발생하는 경우가 있다.
이럴 경우에는 다른 방법을 사용해야 한다. 아래의 예제를 보자.
- CDATA
CDATA 명시적으로 부등호를 감싸주면서 MAPPER 가 이를 인식하게 끔 해준다. CDATA 안에 부등호 조건 자체를 넣어주어도 되나, 부등호만 써주는 것이 조금 더 가독성이 좋다. 형식은 아래와 같이 사용하면 된다.
SELECT * FROM
WHERE AGE <![CDATA[<]]> 25
SELECT * FROM
WHERE AGE <![CDATA[>]]> 25
SELECT * FROM
WHERE AGE <![CDATA[>=]]> 25
SELECT * FROM
WHERE AGE <![CDATA[<=]]> 25