[Mybatis] 자동 매핑 개념과 예제

MyBatis에서 자동 매핑은 쿼리 결과를 자바 객체에 자동으로 매핑하는 기능을 말합니다. 객체의 필드 이름과 결과 셋의 컬럼 이름이 일치하면 자동으로 매핑됩니다. 이를 통해 별도의 매핑 설정 없이 간단하게 쿼리 결과를 객체에 매핑할 수 있습니다. 아래는 자동 매핑의 개념과 예제입니다.

예제: 자동 매핑

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class AutoMappingExample {

    public static void main(String[] args) {
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder()
                .build(AutoMappingExample.class.getResourceAsStream("/mybatis-config.xml"));

        try (SqlSession sqlSession = sessionFactory.openSession()) {
            // 자동 매핑을 사용한 쿼리 실행
            Book book = sqlSession.selectOne("getBookById", 1);
            System.out.println("Book: " + book);
        }
    }
}` 

매퍼 XML 파일:

BookMapper.xml:

<!-- 자동 매핑을 사용한 SELECT 쿼리 -->
<select id="getBookById" resultType="Book">
  SELECT * FROM books WHERE id = #{id}
</select>` 

위의 예제에서는 getBookById 쿼리 결과를 Book 객체에 자동으로 매핑하고 있습니다. resultType 속성에 Book 클래스를 지정함으로써 자동 매핑을 활성화하고, 객체의 필드 이름과 쿼리 결과의 컬럼 이름이 일치하면 자동으로 매핑됩니다.

Book 클래스:

public class Book {
    private int id;
    private String title;
    private String author;

    // 생성자, getter, setter 생략
}` 

이 예제에서는 별도의 매핑 설정 없이도 Book 객체에 자동으로 쿼리 결과를 매핑하는 것을 확인할 수 있습니다. 하지만 필드 이름과 컬럼 이름이 일치해야 자동으로 매핑됩니다.