Spring Data的Pageable是否采用页码或查询偏移量?

时间:2012-11-03 15:41:41

标签: java spring java-ee spring-data

我正在使用spring-data jpa 1.1.0.M1现在我们使用了更高版本,并因spring-data-mongodb而遇到spring-data-commons的问题。因此,我们在服务中使用了实体管理器来处理某些查询,包括offsetlimit的查询。

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

documentation我明白pageable interface是我需要的。但实现类PageRequest需要page个参数。这是否意味着我的offset成了以下内容?

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

我说得对吗? 感谢您阅读本文。

2 个答案:

答案 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正在为您执行此工作。