WEB SERVER [ 웹 서버 ]/SPRING BOOT [스프링 부트]

최신 글 부터 목록에 표시하기

prayme 2020. 1. 14. 17:14

시작하기 앞서

처음 배우는 스프링 부트 2를 읽다가 글 목록을 불러오는 예제를 따라해봤다. 예제에서는 가장 먼저 만들어진 글 부터 불러왔지만 우리가 평소에 마주하는 게시판들은 모두 최신 글을 가장 먼저 불러온다. 따라서 예제를 수정해서 최신 글부터 불러오는 것을 시도했다.

Pagination

쪽수 매기기라는 뜻이다. 추후 게시판을 구현 할 일이 생긴다면 Spring boot Pagination examples 등으로 검색하면 좋을 것 같다.

Pagable

Spring Data JPA에서 제공하는 편리한 객체이다. 책을 읽고 나중에 더 깊게 공부하자

Pagination을 위한 Pageable 객체

Pageable 객체의 구현체인 PageRequest.of를 사용한다. 그래서 먼저 PageRequest의 코드를 먼저 살펴보자.

public static PageRequest of(int page, int size) {
        return of(page, size, Sort.unsorted());
}
public static PageRequest of(int page, int size, Sort sort) {
        return new PageRequest(page, size, sort);
}

기존 코드

pageable = PageRequest.of(pageable.getPageNumber() <= 0 ? 0 : pageable.getPageNumber() - 1,
                pageable.getPageSize());

기존의 코드는 위에 Sort가 없는 메소드를 사용했다. 그랬더니 오름차순(ascending)으로 글이 정렬되었다. 따라서 내림차순(descending)으로 변경해줄 필요가 있었다. 기존 코드의 실행 화면을 살펴보자.



변경 코드

pageable = PageRequest.of(pageable.getPageNumber() <= 0 ? 0 : pageable.getPageNumber() - 1,
                pageable.getPageSize(), Sort.by("idx").descending());

idx를 기준으로 내림차순으로 정렬하라고 명령했고 사진처럼 잘 정렬이 되었다.