在我的数据库中,我有超过100,000条记录,未来可能更多。所以我想为此实现分页。就像帖子一样,用户偶尔可以访问最旧或过时的帖子。我使用的是spring MVC,数据库是mysql。
我也使用PagedListHolder来实现分页。我想在每页显示25个帖子,但如果我最初获取所有100,000个帖子,那么加载所有记录需要一些时间。如果我首先加载100条记录然后将列表与另外100条记录合并,那么这样做会更好,依此类推。如果用户想要查看最旧的帖子,则获取最后100个帖子并在最后一页显示最后25个帖子。
所以我只是想知道这个解决方案是否可行如果有人可以帮助我给出正确的方向。
答案 0 :(得分: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很有帮助。