study/Spring boot
페이징 처리하기
올스왑
2021. 4. 8. 18:03
게시판이 구현된 사이트는 특정 개수대로 게시글을 나눠 페이지 별로 보여준다.
jpa를 이용하면 이런 페이징 처리를 비교적 간단히 할 수 있다. 몇개씩 노출시킬 지, 어떤 요소를 기준으로 정렬할 것인지, 오름차순인지, 내림차순이지도 정할 수있다.
우선 컨트롤러에서 페이지 요청을 처리하는 메소드를 만든다. 해당 메소드는 데이터를 리스트 형태로 만들어 여러 데이터를 반환한다.
페이징처리를 위해 Pagable이란 객체에 @PageableDefault 어노테이션을 붙여 매개값으로 전달한다.
Pagable은 정렬 기준, 정렬 방법, 노출 개수 등의 정보를 담고 있다.
페이징 설정 정보가 담긴 객체를 JpaRepository의 findAll()메소드에 매개값을 넣어주면, 데이터들을 Page 객체에 담아 리턴한다. 그러면 반환받은 객체를 스트림을 적용해 List 타입으로 바꾼다. 이 객체를 반환하면 페이징 처리를 해서 반환할 수 있다.
클라이언트는 쿼리스트링을 사용해 page를 정하고 요청하면 데이터가 담긴 리스트를 반환받는다.
ex) /api/user?page=2
페이지마다 넘버링을 하기 위해선 페이지 정보가 필요하고 얻어내려면 위에서 생성된 Page 객체에서 얻어낼 수 있다.
Page 객체에서 전체 페이지, 전체 원소, 현재 페이지, 현재 원소 등을 가져오게 되면 페이지 자체에 대한 정보를 얻어올 수있다.