[Mybatis] 동적 SQL 스크립트 사용 예제

MyBatis에서는 동적 SQL을 작성할 때 동적 스크립트를 사용하여 더 복잡한 조건을 처리할 수 있습니다. 동적 스크립트는 SQL 조건문을 조합하는 데 유용합니다. 아래는 동적 스크립트를 사용하는 예제입니다.

예제: 동적 스크립트 사용

  1. 매퍼 XML 파일 작성:
<!-- UserMapper.xml -->
<mapper namespace="com.example.UserMapper">
    <select id="getUserWithFilters" resultType="User">
        SELECT * FROM users
        WHERE
        <if test="filter != null">
            <script> <!-- 동적 스크립트로 복잡한 조건을 작성 -->
                AND (
                <if test="filter.username != null">
                    username = #{filter.username}
                </if>
                <if test="filter.email != null">
                    OR email = #{filter.email}
                </if>
                ) </script>
        </if>
    </select>
</mapper>` 

위의 예제에서는 <if> 태그 내에서 <script> 요소를 사용하여 동적 스크립트를 작성합니다. 이를 통해 복잡한 조건을 조합하고, filter 객체의 필드에 따라 SQL 조건을 동적으로 생성합니다.

  1. Java 코드에서 파라미터 설정 및 호출:
public class Main {

    public static void main(String[] args) {
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        try (SqlSession sqlSession = sessionFactory.openSession()) {
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            
            UserFilter filter = new UserFilter();
            filter.setUsername("example");
            
            // 동적 스크립트를 사용한 쿼리 호출
            List<User> users = userMapper.getUserWithFilters(filter);
            
            System.out.println("Users: " + users);
        }
    }
}` 

위의 Java 코드에서는 filter 객체를 사용하여 필터 조건을 설정하고, 동적 스크립트를 사용하여 SQL 쿼리를 호출합니다. 이를 통해 필요한 조건에 따라 동적으로 SQL을 생성하고 실행할 수 있습니다.

동적 스크립트를 사용하면 복잡한 SQL 쿼리를 더 효율적으로 작성할 수 있으며, 다양한 조건을 처리하는 데 유용합니다.