我正在使用spring-data jpa 1.1.0.M1
现在我们使用了更高版本,并因spring-data-mongodb
而遇到spring-data-commons
的问题。因此,我们在服务中使用了实体管理器来处理某些查询,包括offset
和limit
的查询。
既然我们已降级并且一切似乎都很好,我们希望在data access
时保持存储库级别下的所有内容,并在服务中的业务逻辑上做很多事情。
从documentation我明白pageable interface
是我需要的。但实现类PageRequest需要page
个参数。这是否意味着我的offset
成了以下内容?
offset = page* limit; => page = offset/limit;
我说得对吗? 感谢您阅读本文。
答案 0 :(得分:0)
Spring使用的页码范围为1 - n。
使用前五个结果。
new PageRequest(1, 5);
使用下一个五个结果。
new PageRequest(2, 5);
不应将页面索引与先前结果的偏移相混淆。
答案 1 :(得分:-1)
PageRequest对象有一个构造函数,用于获取页面和大小。其他构造函数允许您指定其他详细信息,例如排序方向。
new PageRequest(int page, int size)
请参阅: Spring PageRequest API Documentation
PageRequest
作为参数传递给您的某个存储库查找方法。在下面的例子中,我得到了我博客的前五个条目。
@RequestMapping("/")
public String blog(Model model) {
Sort sort = new Sort(Direction.DESC, "postId");
model.addAttribute("posts",
postViewRepository.findAll(new PageRequest(0, 5, sort))
.getContent());
model.addAttribute("tease", true);
return "blog/blog";
}
在此示例中,对存储库findAll(PageRequest)
方法的调用返回org.springframework.data.domain.Page
个对象。 Page
对象包含几个方便的方法,允许检索有关基础ResultSet的信息,例如大小和页数。
请参阅: Spring Page API Documentation
鉴于这些方便的功能,我不确定您是否需要关注管理偏移量或当前页面,因为Spring Data正在为您执行此工作。