[Mybatis] 스크립트 매핑 (Scripting) 예제

MyBatis에서는 스크립트 매핑을 사용하여 더 복잡한 SQL 조건을 처리할 수 있습니다. 이를 통해 자유롭게 SQL을 작성하고 파라미터와 조건을 활용할 수 있습니다. 아래는 스크립트 매핑을 사용하는 예제입니다.

예제: 스크립트 매핑 사용

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

위의 예제에서는 <script> 요소를 사용하여 스크립트를 작성합니다. 이 스크립트 내에서 필요한 SQL 조건을 자유롭게 작성하고 파라미터를 참조할 수 있습니다.

  1. Java 코드에서 호출:
public class User {
    private String username;
    private String email;
    
    // Getter 및 Setter 생략
}

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);
            
            User filter = new User();
            filter.setUsername("example");
            filter.setEmail("example@example.com");
            
            // 스크립트 매핑을 사용한 동적 SQL 쿼리 호출
            List<User> users = userMapper.getUsersByFilter(filter);
            
            System.out.println("Users: " + users);
        }
    }
}` 

위의 Java 코드에서는 스크립트 매핑을 사용하여 스크립트로 작성된 SQL 쿼리를 호출합니다. 스크립트 내에서 필터 조건을 동적으로 처리하고 필요한 데이터를 검색합니다.

스크립트 매핑은 복잡한 SQL 쿼리를 처리하거나 고급 동적 SQL 조건을 다룰 때 매우 유용합니다. 필요한 SQL을 자유롭게 작성하고 파라미터와 조건을 활용할 수 있습니다.