2012-08-09 61 views
5

在我的數據庫中,我有超過100,000條記錄,未來可能會更多。所以我想實現這個分頁。它像帖子和偶爾用戶可以去最舊或過舊的帖子。我使用的是Spring MVC,而數據庫是mysql。什麼是使用Spring MVC與mysql實現分頁的最佳方式

此外我正在使用PagedListHolder來實現分頁。我想每頁顯示25個帖子,但是如果我最初獲取所有100,000個帖子,那麼加載所有記錄需要一些時間。所以,如果我第一次加載100條記錄,然後將該列表與另外100條記錄合併等,這會更好。如果用戶想要查看最舊的帖子,則獲取最後100個帖子,並在最後一頁顯示最後25個帖子。

所以只是想知道這個解決方案是否可行將這項工作,如果有人可以幫助我給正確的方向。

+1

http://stackoverflow.com/questions/2245035/how-to-implement-pagination-in-spring-mvc-3 – AlphaMale 2012-08-09 05:18:03

+2

我使用setFirstResult和setMaxResults(限制),如http://stackoverflow.com/questions/2245035 /如何對實施-分頁式彈簧-MVC-3。使用start和limit可以計算從何處開始獲取數據和多少。仍然不明白爲什麼要合併列表中的值而不是獲取新記錄。在我的實現中,我只提取想要在當前頁面中顯示的記錄數。如果您獲取的值較少,您可能會懶惰地爲某些頁面提取數據,但這種情況可以通過緩存或增加數據庫連接數(針對大型用戶)來處理。 – Pramod 2012-09-18 02:01:02

回答

6

如果您使用的是ORM,Spring Data JPA可以輕鬆地提供開箱即用的分頁功能。

爲實體DAO接口需要分頁將延長PagingAndSortingRepository接口,如: -

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

的分頁操作的關鍵接口是Pageable。它準備使用執行PageRequest封裝分頁輸入,如最大結果大小,頁面號,大小,排序方式,排序方向,偏移量。

PageRequest可以從一個處理程序方法請求屬性中獲取並作爲參數傳遞到像庫方法: -

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

返回類型Page,可以考慮層呈現像細節的情況下容易地重複結果大小,結果總數,排序順序,排序方向。

我發現這個tutorial有幫助。

相關問題