3

spring-data jpa 1.1.0.M1现在使用的是更高版本,spring-data-mongodb但由于spring-data-commons. 因此,我们在服务中使用了实体管理器来处理某些查询,包括使用offset和的查询limit

既然我们已经降级并且一切似乎都很好,我们希望在涉及到data access服务中的业务逻辑并在业务逻辑上做很多事情时,将所有内容都保持在存储库级别。

从这个文档我明白这pageable interface就是我需要的。但是实现类PageRequest需要page参数。这是否意味着我offset的成为以下?

offset = page* limit; => page = offset/limit; 

我做对了吗?感谢您阅读本文。

4

2 回答 2

-1

PageRequest 对象有一个获取页面和大小的构造函数。其他构造函数允许您指定其他详细信息,例如排序方向。

new PageRequest(int page, int size) 

请参阅: Spring PageRequest API 文档

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";
}

在此示例中,对 repositoriesfindAll(PageRequest)方法的调用返回一个org.springframework.data.domain.Page对象。该Page对象包含几个方便的方法,这些方法允许检索有关底层 ResultSet 的信息,例如大小和页数。

请参阅: Spring Page API 文档

鉴于这些方便的功能,我不确定您是否需要关心管理偏移量或当前页面,因为 Spring Data 正在为您执行这项工作。

于 2012-11-03T19:12:23.207 回答
-1

Spring 使用范围从 1 到 n 的页码。

要获得前五个结果,请使用。

new PageRequest(1, 5);

要获得接下来的五个结果,请使用。

new PageRequest(2, 5);

页面索引不应与先前结果的偏移量相混淆。

于 2016-01-10T14:05:48.637 回答