[Mybatis] 동적 SQL when 예제
<when>
요소는 MyBatis에서 동적 SQL을 생성할 때 사용되며, <choose>
나 <if>
와 함께 조건에 따라 SQL 조각을 동적으로 생성할 수 있습니다. <when>
요소는 특정 조건을 만족할 때 SQL 조각을 실행하는데 사용됩니다. 아래에 간단한 <when>
예제를 제공하겠습니다.
가령, “orders” 테이블에서 주문의 검색 조건에 따라 동적으로 SQL 쿼리를 생성하는 상황을 가정해봅시다. 사용자는 선택적으로 “status”와 “customer_id” 조건을 지정할 수 있습니다. 조건이 제공되면 해당 조건을 포함한 쿼리를 실행하고, 조건이 없으면 모든 주문을 조회하는 쿼리를 실행하려고 합니다.
MyBatis에서 이를 구현하려면 다음과 같이 <when>
요소를 사용할 수 있습니다.
<select id="selectOrders" resultType="your.package.Order">
SELECT * FROM orders
<where>
<if test="status != null">
<when test="status == 'Shipped'">
AND order_status = 'Shipped'
</when>
<when test="status == 'Pending'">
AND order_status = 'Pending'
</when>
</if>
<if test="customer_id != null">
AND customer_id = #{customer_id}
</if>
</where>
</select>`
위의 예제에서는 <if>
와 함께 <when>
요소를 사용하여 조건에 따라 다른 SQL 조각을 생성합니다. 만약 “status” 조건이 제공되면, 해당 조건에 따라 다른 <when>
요소가 실행됩니다.
이제 selectOrders
쿼리를 호출할 때, 파라미터로 “status”와 “customer_id”를 전달하면 해당 조건에 맞는 주문을 조회할 수 있습니다. 조건이 없는 경우엔 모든 주문을 조회하는 쿼리가 실행됩니다.