Spring Mybatis 페이징 처리 이해하기 1
스프링을 이용한 웹 애플리케이션에서 페이징 처리 해보기(DB:mySQL)
2024.09.11 - [Spring] - Spring 페이징 처리 이해하기 2
ㅇ 더미데이터 추가하기
테이블을 하나 생성하고 테스트를 위한 더미데이터를 추가한다.
(테이블에 대한 vo클래스와 dto클래스도 준비가 되어있어야 한다.)
테이블을 생성한다.
재귀 복사를 이용하여 더미 데이터를 추가한다
# 재귀 복사는 기존의 테이블의 내용을 다시 같은 테이블로 insert하는 방식이다.
insert into tbl_todo (title, dueDate, writer)
(select title, dueDate, writer
from tbl_todo);
# 카운트를 사용하여 tno의 개수를 확인한다.
# 페이징 처리를 위해선 전체 데이터의 개수도 필요하기 때문에 count는 꼭 필요하다.
select count(tno)
from tbl_todo;
ㅇ limit 사용해보기
mariaDB와 mySQL에서는 페이징 처리를 위해 limit를 사용한다.
limit 뒤에는 하나 혹은 두 개의 값을 전달할 수 있다.
# limit 뒤에 숫자가 하나일때는 가져오는 데이터의 수(fetch)를 의미한다.
select *
from tbl_todo
order by tno desc
limit 10;
가져오는 데이터의 수가 10이기 때문에 내림차순으로 10개가 조회된다.
# limit 뒤에 2개의 값을 전달할때는 첫번째 값은 건너뛰는 데이터의 수(skip)
# 두번째 값은 가져오는 데이터의 수(fetch)를 의미한다.
select *
from tbl_todo
order by tno desc
limit 10, 10;
skip의 값이 10이기 때문에 10개를 건너뛰고 3051번 부터 10개가 조회된다.
limit의 단점
편리한 페이징 처리 기능을 제공하지만 식(expression)은 사용할 수 없고 오직 값만 주어야 한다는 단점이있다.
ㅇ 페이지DTO 만들기
기본적으로 페이지 처리에는 현재 페이지의 번호(page)와 한 페이지당 보여주는 데이터의 수(size)가 필요하다.
page와 size이외에 limit에서 사용하는 skip을 사용하기 위해 getSkip을 만들었다.
ㅇ 매퍼에 추가하기
매퍼 인터페이스에 메서드를 추가한다.
xml 파일에도 쿼리를 추가한다.
myBatis는 기본적으로 getXXX, setXXX로 동작하기 때문에 skip의 경우는 getSkip을 호출한다.
ㅇ Test
테스트 코드를 작성하고 실행해본다.
데이터가 10개만 출력되는걸 확인할 수 있다.
여기까지가 요청에 대한 처리다. 응답을 위한 목록데이터 DTO, 서비스 계층, 컨트롤러 계층 jsp의 처리를 다음에 포스팅 해볼 예정이다.