2012-08-09 4 views
5

私のデータベースには100,000以上のレコードがありますが、将来的にはそれ以上になる可能性があります。だから私はこれのためにページ分割を実装したいと思っています。記事のように、しばらくの間、ユーザーは古いものや古いものに行くことができます。私は春のMVCを使用しており、データベースはmysqlです。mysqlでspring MVCを使用してページ分割を実装する最良の方法

また、私はページ分割を実装するためにPagedListHolderを使用しています。ページあたり25個の投稿を表示したいのですが、最初に10万個の投稿をすべて取得すると、すべてのレコードを読み込むのに時間がかかります。最初に100個のレコードをロードした後、リストを別の100個のレコードなどにマージすると、これがより効果的です。ユーザーが最も古い投稿を表示する場合は、最後の100件の記事を取得し、最後の25件を最後のページに表示します。

誰かが正しい方向を示すのを手助けできるなら、この解決策は実現可能かどうかを知りたがっています。

+1

http://stackoverflow.com/questions/2245035/how-to-implement-pagination-in-spring-mvc-3 – AlphaMale

+2

http://stackoverflow.com/questionsのようにsetFirstResultとsetMaxResults(limit)を使用します。/2245035/how-to-implement-pagination-in-spring-mvc-3 startとlimitを使用すると、データの取得開始位置とその量を計算できます。まだ新しいレコードをフェッチするのではなく、リスト内の値をマージする理由を理解できていません。私の実装では、現在のページに表示するレコードの数だけを取得します。値を少なくすると、いくつかのページのデータが遅延して取得される可能性がありますが、そのような場合はデータベースの接続数を増やす(大規模なユーザーの場合)ことができます。 – Pramod

答えて

6

ORMを使用している場合、Spring Data JPAは、すぐに使用できるページ付け機能を簡単に提供できます。改ページ操作のためのキーインタフェースはPageableある

public interface BookRepository extends PagingAndSortingRepository<Book,Long>{ 
     // methods other than plain CRUD can be declared here 
} 

- :のようにページネーションはPagingAndSortingRepositoryインタフェースを拡張する必要があるエンティティの

DAOインタフェース。使用可能な実装PageRequestは、最大結果サイズ、ページ番号、サイズ、ソート・バイ・ソート方向、オフセットなどのページング入力をカプセル化します。

PageRequestハンドラメソッドのリクエスト属性からフェッチなどリポジトリメソッドに引数として渡すことができる: -

Page<Book> result = bookRepository.findAll(pageRequest); 

戻り型Pageが容易などの詳細をレンダリングするビュー層に反復することができます結果のサイズ、結果の合計数、ソート順、ソート方向。

私はこれが役に立ちましたtutorialが役に立ちました。

関連する問題