본문 바로가기

Spring

SpringBoot Paging(페이징)에서 제공하는 변수 커스터마이징 하기.

728x90
반응형
SMALL
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 가 되겠습니다.

 

감사합니다.

 

 

 

728x90
반응형
LIST