Java

[Spring Boot] Spring Data JPA에서 Pageable사용한 Pagination 및 정렬 처리 방법

cob 2023. 3. 6. 14:50

 

Pageable이란?
게시판에서 글을 한 번에 보여주지 않고 페이지를 나눠 보여준다. 
정렬 방식, 페이지 번호, 페이지 크기 등 요청에 따라 정보를 전달해 주는 JPA에서 제공해 주는 객체이다.

 

 

 

사용 방법

1-1) Repository 

@Repository
public interface BoardRepository  extends JpaRepository<BoardEntity, String> {

    @Query(value = "select id, user_id, title, content, img, likes, hits\n" +
            "\t\t, (select COUNT(*) from comment where board_id = id) as comments, reg_time \n" +
            "from board \n" +
            "where title like %?1%",
            countQuery = "select count(*) from board",
            nativeQuery = true)
    Page<Map> findPageList(String keyword, Pageable page);
}
  • countQuery : nativeQuery를 사용시 반드시 설정해 줘야한다. 만약, 없다면 value문 기준으로 동작한다.

 

1-2)  Service

    public Page<Map> paging (final int page, final String keyword, final String sort) {
        Pageable pageable = PageRequest.of(page, 10,  Sort.Direction.DESC, sort);

        return  boardRepository.findPageList(keyword, pageable);
    }

 

PageRequest.of(페이지 번호, 페이지 사이즈,  정렬 방법, 정렬 기준 컬럼);
  • 페이지 번호는 0번부터 시작한다.

 

반응형