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