컴퓨터/기타

MyBatis - MyBatis에서 부등호를 처리하자

달서비 2024. 2. 10. 21:26

현재 직장에서 쿼리를 다룰 일이 많습니다. 한국에서 일하다 보니 백엔드로 전자정부 프레임워크를 이용하고 있으며 이는 MyBatis를 통해 쿼리문을 만드는 방식을 사용하고 있습니다. MyBatis는 XML을 이용하기 때문에 부등호 입력 시 문법상의 오류가 날 수 있습니다. 간단하게 정리를 해보려고 합니다. 

MyBatis 로고

 

 

오류코드 (예시 코드)

<select id="newMember">
    SELECT EMP_NO
    FROM REGISTER
    WHERE JOIN_SEQ > 1000
</select>

위에서 말한 것과 같이 XML을 사용하는 방식입니다. 그렇기 때문에 부등호로 사용하는 <>연산자 기호는 MyBatis에서 태그로 사용됩니다. 그렇기 때문에 다음과 같은 방법을 이용합니다.

 

1. CDATA를 이용하기

<select id="newMember">
    SELECT EMP_NO
    FROM REGISTER
    WHERE JOIN_SEQ <![CDATA[>]]> 1000
</select>

 

<![CDATA[ "부등호"]]> 

먼저 CDATA를 이용하는 방법입니다. 해당 태그 안에 부등호를 입력하면 정상적으로 작동됩니다.

 

2. 비교 표현식을 이용하기

<select id="newMember">
    SELECT EMP_NO
    FROM REGISTER
    WHERE JOIN_SEQ &gt; 1000
</select>

&gt; &lt;

두 번째로는 비교 표현식을 이용하는 방법입니다. 형식은 &비교 표현식; 입니다. 비교 표현식은 다음과 같습니다.

비교 표현식 부등호 본딧말
eq = equal
ne <> not equal
lt < little
le <= little or equal
gt > greater
ge >= greater or equal

 

추가) when, if 절을 이용할 때

<select id="newMember">
    SELECT EMP_NO
    FROM REGISTER
    <if test='flag lt 10000'>
    	WHERE JOIN_SEQ &gt; #{SEQ}
    </if>
</select>

마지막으로 mybatis를 사용할 때 when, if 구문을 사용할 때도 있습니다. 그럴 때는 두 번째 비교 표현식을 이용하면 됩니다.