스프링 데이터 JPA 의 페이징 과 정렬에 대해
Sort
와Pageable
2 가지의 특별한 파라미터 제공
주요 기능
- Sort
- 정렬 기능을 제공
- Pageable
- 페이징 기능을 제공하고 내부적으로
Sort
를 포함함
- 페이징 기능을 제공하고 내부적으로
사용
Pageable
의 사용Page<Item> findByPriceGreaterThan(float price, Pageable pageable);
- 예제에서는
PageRequest pageRequest = new PageRequest(0, 10, new Sort(Sort.Direction.DESC, "name")); Page<Member> result = memberRepository.findByNameStartingWith("김", pageRequest);
- 이런식으로 요구하는데
- data jpa 3 에서는
PageRequest pageRequest = PageRequest.of(0, 10, Sort.by(DESC, "price"));
- 이런식으로 호출하도록 변경이 된 것 같다.
@Test void testPageble() { PageRequest pageRequest = PageRequest.of(0, 10, Sort.by(DESC, "price")); Page<Item> byPriceGreaterThan = itemRepository.findByPriceGreaterThan(2000, pageRequest); System.out.println("byPriceGreaterThan = " + byPriceGreaterThan.getContent()); }
select i1_0.id,i1_0.name,i1_0.price,i1_0.stock_quantity from item i1_0 where i1_0.price>2000.0 order by i1_0.price desc limit 0,10; select count(i1_0.id) from item i1_0 where i1_0.price>2000.0; byPriceGreaterThan = [Item(id=20, name=item19, price=19000.0, stockQuantity=19), Item(id=19, name=item18, price=18000.0, stockQuantity=18), Item(id=18, name=item17, price=17000.0, stockQuantity=17), Item(id=17, name=item16, price=16000.0, stockQuantity=16), Item(id=16, name=item15, price=15000.0, stockQuantity=15), Item(id=15, name=item14, price=14000.0, stockQuantity=14), Item(id=14, name=item13, price=13000.0, stockQuantity=13), Item(id=13, name=item12, price=12000.0, stockQuantity=12), Item(id=12, name=item11, price=11000.0, stockQuantity=11), Item(id=11, name=item10, price=10000.0, stockQuantity=10)]
- select 와 count 쿼리가 순차적으로 날아가며
- Page 객체에 담기게된다.
- getTotalPages → 총 페이지수
- getContent → 본문 리스트
Page 인터페이스 메소드
int getNumber()
: 현재 페이지 번호
int getSize()
: 페이지 크기
int getTotalPages()
: 전체 페이지 수
long getTotalElements()
: 전체 데이터 수
List<T> getContent()
: 조회된 데이터
boolean hasNextPage()
,boolean isLastPage()
등: 페이지 네비게이션 관련 메소드
Sort getSort()
: 정렬 정보
Pageable nextPageable()
,Pageable previousPageable()
: 다음/이전 페이지 객체
Uploaded by N2T
'자바 > QueryDsl' 카테고리의 다른 글
`JPAQueryFactory` 에서 NPE 발생 (0) | 2024.02.21 |
---|---|
[QueryDsl] QueryDslSupport 클래스 대안 (0) | 2023.11.19 |
[QueryDsl+DataJpa] QueryDslRepositorySupport 사용! (0) | 2023.11.17 |
[DataJpa] __**@Query 어노테이션을 이용한 쿼리 정의**__ (0) | 2023.11.17 |
[DataJpa] 벌크성 수정 쿼리 (0) | 2023.11.17 |