본문 바로가기

IT · 인터넷

[JAVA] MyBatis에서 IF문과 CHOOSE문 사용하는 방법

반응형

MyBatis는 SQL 쿼리를 유연하게 작성할 수 있는 기능을 제공하여, 
복잡한 조건에 따라 쿼리를 동적으로 생성할 수 있습니다. 

이 글에서는 MyBatis에서 IF문과 CHOOSE문을 사용하는 방법에 대해 알아보겠습니다. 

이를 통해 조건에 따라 SQL 쿼리를 효율적으로 작성하고, 데이터베이스와의 상호작용을 더욱 간소화할 수 있습니다.

 

MyBatis의 IF문 사용

MyBatis의 IF문은 특정 조건에 따라 SQL 쿼리의 일부를 선택적으로 포함할 수 있게 해줍니다. 

이를 통해 동적 SQL을 작성할 수 있으며, 쿼리의 가독성을 높이고 성능을 개선할 수 있습니다.

 

- IF문 사용 예제

다음은 사용자 정보를 조회할 때, 조건에 따라 쿼리를 동적으로 생성하는 예제입니다. 

사용자가 입력한 이름과 나이에 따라 쿼리를 다르게 작성할 수 있습니다.

<mapper namespace="com.example.mapper.UserMapper">
    <select id="selectUserByConditions" parameterType="map" resultType="com.example.model.User">
        SELECT * FROM USERS
        <where>
            <if test="name != null">
                AND NAME = #{name}
            </if>
            <if test="age != null">
                AND AGE = #{age}
            </if>
        </where>
    </select>
</mapper>

 

위의 예제에서 selectUserByConditions 메서드는 name과 age 파라미터를 받아, 해당 값이 null이 아닐 경우에만 쿼리에 포함됩니다. 

 

- CHOOSE문 사용 예제

CHOOSE문은 여러 조건 중 하나를 선택하여 SQL 쿼리를 작성할 수 있게 해주는 기능입니다. 

IF문과 유사하지만, CHOOSE문은 여러 조건 중 하나만 참일 때 해당 조건에 맞는 쿼리를 실행합니다.

 

다음은 사용자의 검색 조건에 따라 쿼리를 다르게 작성하는 예제입니다. 

사용자가 입력한 조건에 따라 이름, 나이, 또는 성별로 검색할 수 있습니다.

<mapper namespace="com.example.mapper.UserMapper">
    <select id="selectUserByChoice" parameterType="map" resultType="com.example.model.User">
        SELECT * FROM USERS
        <where>
            <choose>
                <when test="name != null">
                    AND NAME = #{name}
                </when>
                <when test="age != null">
                    AND AGE = #{age}
                </when>
                <when test="gender != null">
                    AND GENDER = #{gender}
                </when>
                <otherwise>
                    AND 1=1
                </otherwise>
            </choose>
        </where>
    </select>
</mapper>

 

위의 예제에서 selectUserByChoice 메서드는 name, age, gender 중 하나의 조건이 참일 경우 해당 조건에 맞는 쿼리를 실행합니다.

만약 모든 조건이 null일 경우, 1=1 조건을 추가하여 쿼리가 항상 참이 되도록 합니다.

이를 통해 쿼리의 유연성을 높이고, 다양한 검색 조건을 처리할 수 있습니다.

 

마무리

MyBatis에서 IF문과 CHOOSE문을 사용하면, SQL 쿼리를 동적으로 작성할 수 있습니다.

이러한 기능을 활용하면 복잡한 조건을 간단하게 처리할 수 있으며, 코드의 가독성과 유지보수성을 높일 수 있습니다. 

반응형