public void pagingInfo(Pageable pageable){
}
Pageable 객체는 개발자가 페이징을 쉽게 할수 있도록 도와줍니다.
Pageable 객체 안에는
기본적으로 제공하는 메소드 기능들이 있습니다.
그중 저희는
getPageSize와
getPageNumber 를
볼 겁니다.
getPageSize는 나타내고자 하는 요소의 수를 나타냅니다.
getPageNumber는 현재 페이지를 나타냅니다.
기본적으로 요소의 수는 파라미터명이 = size, 현재페이지 정보는 = page 로 되어있습니다.
예시를 보면
url : http://localhost:8080/api/v1/members
설명 : 멤버의 전체목록리스트를 불러오는 api 입니다.
가정 : 유저100명.
이대로 API 요청을 한다면 100개의 데이터가 나오겠죠.
근데 저희는 페이징을 이용하여, size의 값을 15로 지정하면
url : http://localhost:8080/api/v1/members?size=15
설명 : 멤버전체목록리스트를 불러오되 15개만 보여주고 다음페이지로 넘겨라.
가정 : 유저100명
이대로 API 요청을 한다면 첫페이지에는 15개의 데이터가 나오고 나머지의 85개의 데이터는 다음페이지로 넘어갑니다.
마지막 예시를 들면 2번째 페이지에 있는 사이즈가 15인 사람의 목록리스트를 뿌려줘 하면
url http://localhost:8080/api/v1/members?page=1&size=15 가 되겠죠. (page는 0이 첫페이지 입니다.)
여기까지 페이징에 대한 기본적인 지식이였고 저희는 기본적으로 제공하는 page,size 변수를 저희가 원하는 변수명으로 커스터마이징을 해볼겁니다.
@Configuration(proxyBeanMethods=false)
public class PageConfig {
/**
* 페이징 설정
* @return PageableHandlerMethodArgumentResolverCustomizer
*/
@Bean
public PageableHandlerMethodArgumentResolverCustomizer customizer() {
return p -> {
p.setOneIndexedParameters(true);
p.setMaxPageSize(100);
p.setPageParameterName("currentPageNo");
p.setSizeParameterName("recordsPerPage");
};
}
}
이게 무슨뜻이냐면
PageableHandlerMethodArgumentResolverCustomizer 얘가 Paging 기능에 대해 커스터마이징 가능하게 해주는 얘입니다.
중간에 보시면
setMaxPageSize => 총 페이징사이즈
setPageParameterName => page 변수 파라미터를 대체할 값 세팅
setSizeParameterName => size 변수 파라미터를 대체할 값 세팅
이런뜻이 되겠습니다.
그럼 아까처럼 2페이지에 10명의 멤버목록리스트 조회 해온다 하면 (저는 page = currentPageNo, size = recordsPerPage 로 정의했습니다.)
url : http://localhost:8080/api/v1/members?currentPageNo=2&recordsPerPage=10 가 되겠습니다.
감사합니다.
끝
'Spring' 카테고리의 다른 글
@RequestBody 와 @ResponseBody 란? (0) | 2023.06.12 |
---|---|
SpringBoot + WebSocket server 간단하게 구현해보기 (18) | 2023.05.26 |
Springboot + chatGPT API 연동해보기. (9) | 2023.04.24 |
spring 에서 @Async 어노테이션 사용하기(비동기) (1) | 2023.04.20 |
List -> Page 변환 (0) | 2023.03.20 |