[java] MyBatis에서 결과 매핑하기

MyBatis는 SQL 매핑 프레임워크로서, 데이터베이스 결과를 자바 객체에 매핑할 수 있습니다. 이를 통해 간편하게 데이터베이스와 상호 작용할 수 있습니다. 이 글에서는 MyBatis를 사용하여 SQL 쿼리 결과를 자바 객체로 매핑하는 방법에 대해 알아보겠습니다.

1. 매핑할 클래스 정의하기

매핑하려는 테이블과 일치하는 필드를 가진 자바 클래스를 정의해야 합니다. 이 클래스는 테이블의 열과 일치하는 멤버 변수를 가져야 합니다. 예를 들어, 다음과 같이 “User” 테이블이 있다고 가정합시다.

public class User {
    private int id;
    private String username;
    private String email;

    // Getters and setters
}

2. MyBatis 매핑 파일 작성하기

매핑 파일은 SQL 쿼리와 결과를 자바 객체로 매핑하는 규칙을 정의합니다. 이 파일은 XML 형식으로 작성되며, “" 태그로 시작하여 "” 태그로 끝납니다.

다음은 “User” 테이블과 매핑되는 매핑 파일의 예입니다.

<mapper namespace="com.example.UserMapper">
    <resultMap id="userMap" type="User">
        <id column="id" property="id" />
        <result column="username" property="username" />
        <result column="email" property="email" />
    </resultMap>
    
    <select id="getUser" resultMap="userMap">
        SELECT * FROM User WHERE id = #{id}
    </select>
</mapper>

위의 매핑 파일에서는 “userMap”이라는 결과 매핑을 정의하였고, “getUser”라는 쿼리를 실행하는 SELECT 문을 작성했습니다. 이때, “id”는 테이블의 열 이름과 일치해야합니다.

3. MyBatis 설정하기

MyBatis의 설정 파일에서 매핑 파일을 등록해야 합니다.

<configuration>
    <mappers>
        <mapper resource="com/example/UserMapper.xml" />
    </mappers>
</configuration>

위의 예제에서 “com/example/UserMapper.xml”은 매핑 파일의 경로를 나타내며, 실제 경로에 맞게 수정해야 합니다.

4. MyBatis 사용하기

매핑이 완료되면, MyBatis를 사용하여 결과를 자바 객체로 매핑할 수 있습니다. 먼저 SqlSessionFactory를 생성해야합니다.

String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

그런 다음 SqlSession을 생성하여 쿼리를 실행하고 결과를 매핑합니다.

try (SqlSession session = sqlSessionFactory.openSession()) {
    UserMapper userMapper = session.getMapper(UserMapper.class);
    User user = userMapper.getUser(1);
    
    System.out.println(user.getUsername());
    System.out.println(user.getEmail());
} 

위의 예제에서는 SqlSessionFactory를 사용하여 SqlSession 객체를 생성하고, UserMapper 인터페이스를 통해 쿼리를 실행합니다. getUser 메소드를 호출하여 id가 1인 사용자를 가져오고, 결과를 User 객체에 매핑합니다. 이후, User 객체의 필드 값을 출력합니다.

이제 MyBatis를 사용하여 SQL 쿼리 결과를 자바 객체로 매핑하는 방법에 대해 알아보았습니다. MyBatis는 강력한 ORM(Object-Relational Mapping) 도구로, 데이터베이스 작업을 효율적으로 처리할 수 있도록 도와줍니다.

참고 자료