개발자의 오르막

[# JPA] Pageable 본문

ORM/JPA

[# JPA] Pageable

계단 2020. 6. 6. 14:22

 

# PageRequest of 

of()

설명

PageRequest.of(int page, int size)

페이지 번호(0부터 시작), 페이지당 데이터의수

PageRequest.of

(int page, int size, Sort.Direction direction, String ...props)

페이지 번호, 페이지당 데이터의 수, 정렬 방향, 속성(칼럼)

PageRequest.of(int page, int size, Sort sort)

페이지 번호, 페이지당 데이터의 수, 정렬방향

 

- JPA Repository

package com.springboot.study.startSpringBoot.repository;

import com.springboot.study.startSpringBoot.model.Board;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;


import java.util.Collection;
import java.util.List;

/**
 * @author Jake
 * @date: 20/04/01
 */
@Transactional(readOnly = true)
@Repository
public interface BoardRepository extends JpaRepository<Board, Long> {

    public Page<Board> findByBnoGreaterThan(Long bno, Pageable paging);
}

 

- findByBnoGreaterThan(Long bno, Pageable paging) 메소드의 Test Code

@Test
    public void testBnoPagingSort() {
        Pageable paging = PageRequest.of(0, 10, Sort.Direction.ASC, "bno");

        Page<Board> result = boardRepository.findByBnoGreaterThan(0L, paging);
        System.out.println("PAGE SIZE : " + result.getSize());
        System.out.println("TOTAL PAGES : " + result.getTotalPages());
        System.out.println("TOTAL COUNT : " + result.getTotalElements());
        System.out.println("NEXT : " + result.nextPageable());

        List<Board> list = result.getContent();
        list.forEach(System.out::println);
    }

 

 

- 결과값

 

이와 같이 각 페이지의 Size, 전체 페이지 수, 전체 게시물 개수 등의 정보를 알 수 있고,

이는 페이징 작업할 때 관리자에게 알려주는 지표로 자주 활용된다.

 


# Page 객체 구성

 

메소드

설명

int getNumber()

현재 페이지의 정보

int getSize()

한 페이지의 크기

int getTotalPages

전체 페이지의 수

int getNumberOfElements()

결과 데이터 수

boolean hasPreviousPage()

이전 페이지의 존재 여부

boolean hasNextPage()

다음 페이지의 존재 여부

boolean isLastPage()

마지막 페이지 여부

Pageable nextPageable()

다음 페이지 객체

Pageable previousPageable()

이전 페이지 객체

List<T> getContent()

조회된 데이터

boolean hasContent()

결과 존재 여부

Sort getSort()

검색 시 사용된 Sort 정보

 

Comments