[java] MyBatis에서 페이징 처리 방법

MyBatis는 자바 언어를 위한 ORM(Object Relational Mapping) 프레임워크로, 데이터베이스와의 상호작용을 편리하게 해줍니다. 특히, 대량의 데이터를 처리할 때 페이징 기능을 제공하여 효율적인 데이터 조회를 도와줍니다.

이번 글에서는 MyBatis를 사용하여 페이징 처리하는 방법에 대해 알아보겠습니다.

1. SQL 쿼리 작성

SELECT * FROM ( 
    SELECT ROW_NUMBER() OVER (ORDER BY id ASC) AS rownum, 
    column1, 
    column2 
    FROM your_table 
) AS temp_table 
WHERE rownum BETWEEN #{start} AND #{end}

위의 쿼리는 페이징 처리를 위한 SQL 쿼리입니다. your_table은 조회하려는 테이블 이름, column1column2는 조회하려는 컬럼들을 나타냅니다. ROW_NUMBER() 함수를 사용하여 각 행에 순번을 부여하고, rownum 컬럼을 기준으로 페이징 처리합니다.

2. MyBatis 매퍼 작성

<select id="getDataWithPaging" parameterType="java.util.Map" resultMap="yourResultMap">
    SELECT * FROM ( 
        SELECT ROW_NUMBER() OVER (ORDER BY id ASC) AS rownum, 
        column1, 
        column2 
        FROM your_table 
    ) AS temp_table 
    WHERE rownum BETWEEN #{start} AND #{end}
</select>

MyBatis 매퍼에서는 위의 쿼리를 수행할 수 있는 매핑 구문을 작성해야 합니다. parameterType은 쿼리에서 사용되는 파라미터의 타입을 지정하고, resultMap은 조회 결과를 매핑하기 위한 resultMap을 설정합니다. #{start}#{end}는 페이징 처리를 위한 파라미터입니다.

3. Java 코드에서 페이징 처리

int page = 1;
int pageSize = 10;
int start = (page - 1) * pageSize + 1;
int end = start + pageSize - 1;

Map<String, Integer> paramMap = new HashMap<>();
paramMap.put("start", start);
paramMap.put("end", end);

List<Data> dataList = sqlSession.selectList("getDataWithPaging", paramMap);

Java 코드에서는 페이징 처리를 위해 startend 값을 계산하여 파라미터로 전달합니다. getDataWithPaging 메서드에 paramMap을 전달하여 페이징 처리된 데이터를 조회할 수 있습니다.

위의 예시에서는 한 페이지에 10개의 데이터를 보여주고, 1페이지를 조회하도록 설정하였습니다.

마무리

MyBatis를 사용하여 페이징 처리하는 방법에 대해 알아보았습니다. 이를 통해 대량의 데이터를 효율적으로 조회하고 처리할 수 있습니다. MyBatis에 대한 더 자세한 정보는 공식 문서를 참고하시기 바랍니다.