JPAのページネーションとソート
Page
org.springframework.data.domain.Page<T>インターフェースのメソッド
| メソッド | 説明 |
|---|---|
int getNumber(); |
現在のページ番号。0から開始 |
int getSize(); |
ページサイズ |
int getTotalPages(); |
総ページ数 |
int getNumberOfElements(); |
現在のページに含まれる要素数 |
long getTotalElements(); |
総要素数 |
boolean hasPreviousPage(); |
前のページがあるか |
boolean isFirstPage(); |
最初のページか |
boolean hasNextPage(); |
次のページがあるか |
boolean isLastPage(); |
最後のページか |
Pageable nextPageable(); |
次のページ。なければnull |
Pageable previousPageable(); |
前のページ。なければnull |
List<T> getContent(); |
取得したデータ |
boolean hasContent(); |
取得したデータがあるか |
Sort getSort(); |
ソート情報 |
Pageable
Spring Data JPAは、簡単にページネーションを行うためのPageableインターフェースを提供します。
PageableHandlerMethodArgumentResolverCustomizer
デフォルトではページ番号は0から始まります。page、size、sortのデフォルト設定を変更するには、org.springframework.data.web.config.PageableHandlerMethodArgumentResolverCustomizerをカスタマイズします。
ページ番号を1から開始する
setOneIndexedParametersをtrueに設定します。
@Bean
public PageableHandlerMethodArgumentResolverCustomizer customize() {
return p -> p.setOneIndexedParameters(true);
}
返されるPage::numberは0から始まるため、リクエストのページ番号とは1ずれます。
デフォルトのページサイズを設定する
setMaxPageSizeでページサイズを設定します。
@Bean
public PageableHandlerMethodArgumentResolverCustomizer customize() {
return p -> {
p.setMaxPageSize(10); // size=10
};
}
YAMLで設定する
YAMLファイルでも設定できます。
spring:
data:
web:
pageable:
default-page-size: 10
one-indexed-parameters: true