什么是使用Spring MVC与mysql实现分页的最佳方式

问题描述:

在我的数据库中,我有超过100,000条记录,未来可能会更多。所以我想实现这个分页。它像帖子和偶尔用户可以去最旧或过旧的帖子。我使用的是Spring MVC,而数据库是mysql。什么是使用Spring MVC与mysql实现分页的最佳方式

此外我正在使用PagedListHolder来实现分页。我想每页显示25个帖子,但是如果我最初获取所有100,000个帖子,那么加载所有记录需要一些时间。所以,如果我第一次加载100条记录,然后将该列表与另外100条记录合并等,这会更好。如果用户想要查看最旧的帖子,则获取最后100个帖子,并在最后一页显示最后25个帖子。

所以只是想知道这个解决方案是否可行将这项工作,如果有人可以帮助我给正确的方向。

+1

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

+2

我使用setFirstResult和setMaxResults(限制),如http://*.com/questions/2245035 /如何对实施-分页式弹簧-MVC-3。使用start和limit可以计算从何处开始获取数据和多少。仍然不明白为什么要合并列表中的值而不是获取新记录。在我的实现中,我只提取想要在当前页面中显示的记录数。如果您获取的值较少,您可能会懒惰地为某些页面提取数据,但这种情况可以通过缓存或增加数据库连接数(针对大型用户)来处理。 – Pramod 2012-09-18 02:01:02

如果您使用的是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有帮助。