[JAVA] MyBatis(마이바티스) 에서 if문, choose문 사용하기


동적 쿼리(if, choose)

복잡한 형태의 쿼리를 만들다 보면 로직에따라 if문을 추가해야 한다던지 if else 문을 추가해야할 경우가 있습니다.

myBatis는 이를위해 동적 쿼리를 위한 기능을 제공합니다.

그중에서도 가장 많이 사용되는 if 문과 choose문을 살펴보겠습니다.

동적쿼리는 XML 매퍼에 지정하게 되는데, JSTL을 사용해봤던 사람들이라면 큰 어려움이 없는 문법입니다.


IF

age라는 속성의 값이 null이나 빈값이 아닐때 검색조건에 추가하는 구문입니다.

<select id="getContentsP" parameterType="hashmap" resultType="com.test.vo.TestVo">
    SELECT
        id, name
    FROM
        TB_test a
    WHERE
        type = 'A'
        <if test="age != null AND age != ''">
            AND age = #{age}
        </if>
       
</select>


Choose

if else와 같다고 보면 됩니다.

<select id="getContentsP" parameterType="hashmap" resultType="com.test.vo.TestVo">
    SELECT
        id, name
    FROM
        TB_test a
    WHERE
        type = 'A'
        <choose>
            <when test="age > 20 ">
                AND age > #{age}
            </when>    
            <when test="age < 20 ">
                AND age < #{age}
            </when>
            <otherwise>
                AND age is not null
            </otherwise>
        </choose>
</select>