[java] MyBatis에서 페이징 처리하기

MyBatis는 자바에서 SQL을 처리하기 위한 ORM(Object-Relational Mapping) 프레임워크입니다. MyBatis를 사용하면 SQL 쿼리를 직접 작성하지 않고 객체 지향적으로 데이터베이스에 접근할 수 있습니다. 이번 글에서는 MyBatis를 사용하여 페이징 처리를 구현하는 방법에 대해 알아보겠습니다.

1. 페이징 처리란?

페이징 처리는 데이터베이스에서 대량의 데이터를 일정한 크기로 나누어 불러오는 기능입니다. 이를 통해 사용자는 페이지 단위로 데이터를 확인할 수 있으며, 대량의 데이터를 한 번에 로드하여 메모리 부하를 줄일 수 있습니다.

2. MyBatis에서 페이징 처리 구현하기

MyBatis에서 페이징 처리를 구현하기 위해서는 다음의 단계를 따를 수 있습니다:

2.1. SQL 쿼리 작성

페이징 처리를 위해서는 SQL 쿼리에서 LIMIT 절을 사용합니다. LIMIT 절은 조회할 데이터의 시작 위치와 조회할 데이터의 개수를 파라미터로 받아 해당 범위의 데이터를 반환합니다.

SELECT * FROM table_name LIMIT start, size;

위의 쿼리에서 start는 조회할 데이터의 시작 위치를 의미하고, size는 조회할 데이터의 개수를 의미합니다.

2.2. MyBatis 매퍼 파일 작성

MyBatis 매퍼 파일에서는 SQL 쿼리를 작성하고, 매개변수를 전달받아 쿼리를 실행합니다.

<!-- 페이징 처리를 위한 매퍼 파일 -->
<select id="getPagedData" parameterType="map" resultMap="resultMap">
  SELECT * FROM table_name
  LIMIT #{start}, #{size};
</select>

위의 예제에서 getPagedData는 매퍼 파일에서 사용할 ID입니다. 매개변수로 startsize 값을 전달받아 LIMIT 절의 파라미터로 사용합니다.

2.3. Java 코드에서 MyBatis 사용하기

Java 코드에서 MyBatis를 사용하여 페이징 처리를 진행합니다. 페이징 처리를 위한 매개변수로 startsize 값을 설정하고, MyBatis를 통해 매퍼 파일을 호출합니다.

public List<DataType> getPagedData(int start, int size) {
  try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
    Map<String, Integer> parameterMap = new HashMap<>();
    parameterMap.put("start", start);
    parameterMap.put("size", size);
    
    return sqlSession.selectList("Namespace.getPagedData", parameterMap);
  }
}

위의 예제 코드에서는 startsize 값을 parameterMap에 설정하고, selectList 메소드를 통해 매퍼 파일을 호출하여 페이징 처리된 데이터를 반환합니다.

3. 결론

이 글에서는 MyBatis를 사용하여 페이징 처리를 구현하는 방법에 대해 알아보았습니다. MyBatis를 이용하면 간편하게 SQL 쿼리를 작성하고 페이징 처리를 구현할 수 있습니다. MyBatis를 사용하는 프로젝트에서는 페이징 기능을 적용하여 데이터를 효율적으로 관리할 수 있습니다.


참고 문서: