JPA Pagination and Sorting

Page

Methods of the org.springframework.data.domain.Page<T> interface

Method Description
int getNumber(); Current page number, starting at 0
int getSize(); Page size
int getTotalPages(); Total number of pages
int getNumberOfElements(); Number of elements on the current page
long getTotalElements(); Total number of elements
boolean hasPreviousPage(); Whether a previous page exists
boolean isFirstPage(); Whether this is the first page
boolean hasNextPage(); Whether a next page exists
boolean isLastPage(); Whether this is the last page
Pageable nextPageable(); Next page object, or null if none exists
Pageable previousPageable(); Previous page object, or null if none exists
List<T> getContent(); Retrieved data
boolean hasContent(); Whether retrieved data exists
Sort getSort(); Sorting information

Pageable

Spring Data JPA provides the Pageable interface for convenient pagination.

PageableHandlerMethodArgumentResolverCustomizer

Pages start at 0 by default. To change default settings for page, size, and sort, customize org.springframework.data.web.config.PageableHandlerMethodArgumentResolverCustomizer.

Starting Pages at 1

Set setOneIndexedParameters to true.

@Bean
public PageableHandlerMethodArgumentResolverCustomizer customize() {
	return p -> p.setOneIndexedParameters(true);
}

The returned Page::number still starts at 0, so it differs from the requested page by 1.

Setting the Default Page Size

Use setMaxPageSize to configure the page size.

@Bean
public PageableHandlerMethodArgumentResolverCustomizer customize() {
	return p -> {
		p.setMaxPageSize(10);		// size=10
	};
}

YAML Configuration

You can also configure it in a YAML file.

spring:
  data:
    web:
      pageable:
        default-page-size: 10
        one-indexed-parameters: true

Reference