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 쿼리를 동적으로 작성할 수 있습니다.
이러한 기능을 활용하면 복잡한 조건을 간단하게 처리할 수 있으며, 코드의 가독성과 유지보수성을 높일 수 있습니다.
'IT · 인터넷' 카테고리의 다른 글
Vue.js의 컴포넌트와 Props (0) | 2025.02.20 |
---|---|
[NUXT.JS] Vue.js 프레임워크 (0) | 2025.02.19 |
[JAVA] MyBatis 특징과 사용방법 (1) | 2025.02.16 |
[Docker] Docker와 컨테이너화 - 애플리케이션을 컨테이너화하는 방법 (2) | 2025.02.09 |
[JAVA] 메시지 큐(Message Queue) 이해와 활용 (1) | 2025.02.07 |