[Mybatis] 동적 SQL choose 예제
<choose>
요소를 사용하여 MyBatis에서 동적 SQL을 생성할 수 있습니다. <choose>
요소는 여러 개의 조건 중에서 첫 번째로 true인 조건에 해당하는 SQL 조각을 생성합니다. <when>
과 <otherwise>
요소를 함께 사용하여 다양한 조건에 따른 동적 SQL을 만들 수 있습니다. 아래에 간단한 <choose>
예제를 제공하겠습니다.
가령, “products” 테이블에서 검색 조건에 따라 동적으로 SQL 쿼리를 생성하는 상황을 가정해봅시다. 사용자는 선택적으로 “name”과 “category” 조건을 지정할 수 있습니다. 조건이 제공되면 해당 조건을 포함한 쿼리를 실행하고, 조건이 없으면 모든 제품을 조회하는 쿼리를 실행하려고 합니다.
MyBatis에서 이를 구현하려면 다음과 같이 <choose>
요소를 사용할 수 있습니다.
<select id="selectProducts" resultType="your.package.Product">
SELECT * FROM products
<where>
<choose>
<when test="name != null">
AND name = #{name}
</when>
<when test="category != null">
AND category = #{category}
</when>
<otherwise>
-- 조건이 없는 경우에 실행될 SQL
</otherwise>
</choose>
</where>
</select>`
위의 예제에서 사용된 <choose>
요소는 먼저 <when>
요소들을 순차적으로 검사하며, 조건에 해당하는 첫 번째 <when>
요소의 내용을 실행합니다. 만약 어떤 <when>
조건도 true가 아니라면, <otherwise>
내용이 실행됩니다.
이제 selectProducts
쿼리를 호출할 때, 파라미터로 “name” 또는 “category”를 전달하면 해당 조건을 만족하는 제품을 조회할 수 있습니다. 두 조건 중 하나 또는 둘 다 제공되지 않으면 <otherwise>
에 정의된 SQL 조각이 실행됩니다.