Mybatis if ~ else 적용하기

2024. 11. 27. 21:38Java/mybatis

<choose> 사용

<select id="selectUsers" resultType="User">
    SELECT *
    FROM users
    WHERE 1=1
    <choose>
        <when test="name != null">
            AND name = #{name}
        </when>
        <when test="age != null">
            AND age = #{age}
        </when>
        <otherwise>
            AND status = 'active'
        </otherwise>
    </choose>
</select>

<if> 사용

<select id="selectUsers" resultType="User">
    SELECT *
    FROM users
    <where>
        <if test="name != null">
            name = #{name}
        </if>
        <if test="age != null">
            AND age = #{age}
        </if>
    </where>
</select>

응용

<mapper namespace="UserMapper">

    <select id="selectUsers" parameterType="map" resultType="User">
        SELECT *
        FROM users
        <where>
            <if test="name != null">
                name = #{name}
            </if>
            <if test="age != null">
                AND age = #{age}
            </if>
        </where>
        <choose>
            <when test="status != null">
                ORDER BY status
            </when>
            <otherwise>
                ORDER BY created_at DESC
            </otherwise>
        </choose>
    </select>

</mapper>

update문에 사용

<update id="updateUser" parameterType="map">
    UPDATE users
    <set>
        <if test="name != null">
            name = #{name},
        </if>
        <if test="email != null">
            email = #{email},
        </if>
        <if test="age != null">
            age = #{age},
        </if>
    </set>
    WHERE id = #{id}
</update>

'Java > mybatis' 카테고리의 다른 글

Mybatis 로그 설정  (0) 2024.12.28
Mybatis insert후 키값 반환하기  (0) 2024.12.27
mybatis ORA-00979: GROUP BY 표현식이 아닙니다  (0) 2024.11.26
mybatis를 이용해서 BLOB 저장  (1) 2024.11.07
IN() 절 처리  (0) 2024.11.07