Spring Data JPAデータの改ページと並び替えの方法
一、読み解き
数千万のリストデータを一度にロードすると、ページ上に表示されるのは非常に時間がかかります。大きなデータの照会結果を扱う際には、ページ別の照会が必要です。改ページクエリには必ず一定のソート規則が伴っています。そうでなければ、改ページデータの状態をコントロールすることが難しく、ユーザーは異なるページで同じデータを見ることができます。さて、この記事の主な内容は、Spring Data JPAを使ってページ分けと並べ替えを行う方法を紹介します。
二、実体定義
簡単なエンティティ定義を使います。Artcle(記事)
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Entity
@Table(name="article")
public class Article {
@Id
@GeneratedValue
private Long id;
@Column(nullable = false,length = 32)
private String author;
@Column(nullable = false, unique = true,length = 32)
private String title;
@Column(length = 512)
private String content;
private Date createTime;
}
インターフェースArtcleRepositoryの継承を定義します。 Paging AndSortingRepositor。Paging AndSortingRepositoryインターフェースは基礎的なCURD関数だけでなく、並べ替え、改ページのインターフェース関数定義もサポートします。
public interface ArticleRepository extends PagingAndSortingRepository<Article,Long> {
// article , Pageable , SQL
Page<Article> findAll(Pageable pageable);
// author article , Pageable , SQL
Page<Article> findByAuthor(String author, Pageable pageable);
// author title , article , Pageable , SQL
Slice<Article> findByAuthorAndTitle(String author, String title, Pageable pageable);
}
四、改ページの実現Pagease. Springで定義されているインターフェースです。改ページパラメータの伝達のために、どのように使うかを見てみます。まず、ArtcleRepositoryを耐久層の操作を必要とするクラスに注入します。通常は@Service注釈のクラスです。その後、サービス方法内で次のコードを使ってページ分けを行います。第一ページ(0から)のデータを調べて、各ページの10データを調べます。
Pageable pageable = PageRequest.of(0, 10); //
//Pageable pageable = PageRequest.of(0, 10); //
//Pageable pageable = PageRequest.of(0, 10); //
//
Page<Article> articlePage = articleRepository.findAll(pageable);
// List
List<Article> articleList = articlePage.getContent();
findAll法はPage類のオブジェクトを応答としており、クエリー結果Listを取得したいなら、get Conttent()法を使用することができる。しかし、笔者はこのように転换することを勧めません。先端には改ページリストがあります。データだけでなく、改ページ情报も必要です。現在の第数ページ、各ページの数、全部で何ページ、全部で何条ですか?これらの情報はPageオブジェクト内で入手できます。五、並べ替えを実現する
Spring Data JPAは提供しています。
Sort
オブジェクトは、順序付けメカニズムを提供するために使用される。並べ替えの仕方を見せてください。
articleRepository.findAll(Sort.by("createTime"));
articleRepository.findAll(Sort.by("author").ascending()
.and(Sort.by("createTime").descending()));
最初のfindAll方法はcreateTimeの昇順で並べ替えられます。最初のfindAll方法はauthorの昇順で並べ替えて、createTimeの降順で並べ替えます。
改ページと並べ替え
Pageable pageable = PageRequest.of(0, 10,Sort.by("createTime"));
六、SliceとPageArtcleRepositoryではSliceに戻る方法と別の方法がPageに戻る方法を見た。これらはみなSpring Data JPAのデータ応答インターフェースである。 Page はい、 Sliceのサブインターフェースです。これらはすべてデータを保存して返します。
6.1.Slice
ちょっと見てみましょう Sliceのいくつかの重要な方法。
List <T> getContent(); //
Pageable getPageable(); //
boolean hasContent(); // ?
boolean isFirst(); //
boolean isLast(); //
Pageable nextPageable(); //
Pageable previousPageable(); //
6.2.PagePageはSliceのサブインターフェースであり、以下に重要な方法がある。
//
int getTotalPages();
//
long getTotalElements();
では、Sliceはいつ使いますか?いつPageを使いますか?この二つのインターフェースの関数定義によって、Sliceは次のスライス(改ページ)があるかどうかだけに関心があり、データベースcountに行って全体の行数、総ページ数を計算しないことが分かります。だから比較的に大きいデータ量のリストのマウスあるいは指に適してスクリーンの操作を滑って、全部で何ページがあるかに関心を持たないで、ただ次のページがあるかどうかに関心を持ちます。Pageは伝統的なアプリケーションのテーブル開発に適しています。総ページ数と総ページ数を知る必要があります。
締め括りをつける
以上は小编が绍介したSpring Data JPAのデータの改ページと顺位の方法です。皆さんに何かご迷惑があったらメッセージをください。小编はすぐに返事します。ここでも私たちのサイトを応援してくれてありがとうございます。
本文があなたのためになると思ったら、転載を歓迎します。出所を明記してください。ありがとうございます。