[Mybatis] Mapper XML과 인터페이스 분리 예제

MyBatis에서는 Mapper XML 파일과 인터페이스를 분리하여 사용하는 것이 일반적인 방법 중 하나입니다. 이를 통해 SQL 쿼리와 Java 코드를 분리하여 관리할 수 있습니다. 아래는 Mapper XML 파일과 인터페이스를 분리하는 예제입니다.

예제: Mapper XML과 인터페이스 분리

  1. XML 매퍼 파일 작성:

먼저 SQL 쿼리를 포함하는 XML 매퍼 파일을 작성합니다.

<!-- UserMapper.xml -->
<mapper namespace="com.example.UserMapper">

    <select id="getUserById" parameterType="int" resultType="User">
        SELECT * FROM users WHERE id = #{id}
    </select>
    
    <!-- 다른 SQL 쿼리들 -->
</mapper>` 
  1. 매퍼 인터페이스 작성:

XML 매퍼 파일과 연결할 인터페이스를 작성합니다.

@Mapper
public interface UserMapper {

    User getUserById(int id);
    
    // 다른 메서드들
}` 
  1. Java 코드에서 사용:

Java 코드에서는 매퍼 인터페이스를 사용하여 SQL 쿼리를 호출합니다.

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);
            
            int userId = 1;
            User user = userMapper.getUserById(userId);
            
            System.out.println("User: " + user);
        }
    }
}` 

위의 예제에서는 XML 매퍼 파일에서 SQL 쿼리를 정의하고, 매퍼 인터페이스에서 해당 쿼리를 호출합니다. MyBatis는 XML 매퍼 파일과 매퍼 인터페이스를 연결하고 필요한 SQL을 실행합니다.

이렇게 하면 SQL 쿼리와 Java 코드를 분리하여 유지 관리하기 쉽고 가독성을 향상시킬 수 있습니다. SQL 쿼리가 변경되어도 인터페이스만 수정하면 되므로 유지 보수가 용이합니다.