6

在我的数据库中,我有超过 100,000 条记录,将来可能会更多。所以我想为此实现分页。它就像帖子一样,偶尔用户可以转到最旧或太旧的帖子。我正在使用spring MVC,数据库是mysql。

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

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

4

1 回答 1

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,可以很容易地在视图层中迭代以呈现结果大小、结果总数、排序顺序、排序方向等细节。

我发现本教程很有帮助。

于 2013-09-12T09:23:26.387 回答