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
은 조회하려는 테이블 이름, column1
과 column2
는 조회하려는 컬럼들을 나타냅니다. 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 코드에서는 페이징 처리를 위해 start
와 end
값을 계산하여 파라미터로 전달합니다. getDataWithPaging
메서드에 paramMap을 전달하여 페이징 처리된 데이터를 조회할 수 있습니다.
위의 예시에서는 한 페이지에 10개의 데이터를 보여주고, 1페이지를 조회하도록 설정하였습니다.
마무리
MyBatis를 사용하여 페이징 처리하는 방법에 대해 알아보았습니다. 이를 통해 대량의 데이터를 효율적으로 조회하고 처리할 수 있습니다. MyBatis에 대한 더 자세한 정보는 공식 문서를 참고하시기 바랍니다.