tuter77

게시판 만들기(3) 본문

GroupStudy

게시판 만들기(3)

tuter77 2023. 1. 29. 20:04

● JPA기반 게시판 만들기.

▷ 게시판 페이징 처리 작업.

    @Override
    public Page<Board> boardlist(int page){
        return boardRepository.findAll(PageRequest.of(page, 10, Sort.by(Sort.Direction.DESC, "id")));
    }

servicelmpl 파일에 위와 같은 기능을 추가했다. 

이 기능은 page를 매개변수로 받는 boardList에 findAll()메서드를 사용하여 boardRepo 저장소에서 페이지를 찾아 반환해주는 기능을 가졌다. 

Sort.by를 이용하여 페이지는 10개씩 나오고, id값을 기준으로 내림차순 정렬하는 방식을 선택했다. 

이 기능을 구현하기 위해 공부한 것이, @PageableDefault, pageable, pageable의 하위 클래스인 pageRequest 등이었다.

아래는 해당 공부에 대한 간단히 정리한 내용이다.

 

▷ @PageableDefault

 

@PageableDefault 는 Spring MVC 컨트롤러에서 Pageable 요청 매개변수에 대한 기본값을 지정하는 데 사용할 수 있는 Spring Data 웹 지원 라이브러리의 주석이다.

페이지의 기본 크기, 기본 페이지 번호 및 결과의 기본 정렬 순서를 지정할 수 있는데, 예제를 통해보면 아래와같다.

@GetMapping("/items")
public Page<Item> getItems(@PageableDefault(size = 20, page = 0, sort = "name", direction = Sort.Direction.ASC) Pageable pageable) {
    return itemService.getItems(pageable);
}

이 예제에서 메서드는 주석 getItems()에 지정된 기본값을 사용하여 생성된 Pageable 개체를 인수로 허용한다 . @PageableDefault기본 페이지 크기는 20이고 기본 페이지 번호는 0(첫 번째 페이지)이며 기본 정렬 순서는 "이름" 속성에 따른 오름차순이다.

클라이언트가 페이지 매김 또는 정렬 매개변수를 지정하지 않고 이 끝점에 요청하면 서버는 페이지 크기가 20인 결과의 첫 번째 페이지를 "id" 속성에 따라 오름차순으로 정렬하여 반환한다.

요청 쿼리 문자열에서 페이지 매김 및 정렬 매개변수에 다른 값을 지정하여 기본값을 재정의할 수도 있는데,

예를 들어 페이지 크기가 10이고 "가격" 속성별로 내림차순으로 정렬된 결과의 두 번째 페이지를 요청하려면 다음과 같이 요청할 수 있다.

 

GET /items?page=1&size=10&sort=price,desc

위 내용은 2022.12.29에 공부한 내용입니다.

링크 : https://dudwls3278.tistory.com/30