你可以使用新引入的
Top和
First关键字来定义查询方法,如下所示:
findTop10ByLastnameOrderByFirstnameAsc(String lastname);
Spring Data将自动将结果限制为你定义的数目(如果省略,则默认为1)。请注意,结果的排序在这里变得很重要(通过OrderBy示例中的子句或将Sort参数传递给方法)。在涵盖Spring Data Evans发布系列的新功能的博客文章中或在文档中了解更多内容。
对于以前的版本
为了只检索数据片段,Spring Data使用了分页抽象,该分页抽象Pageable在请求方带有接口,在Page事物的结果侧也带有抽象。所以你可以开始
public interface UserRepository extends Repository<User, Long> { List<User> findByUsername(String username, Pageable pageable);}并像这样使用它:
Pageable topTen = new PageRequest(0, 10);List<User> result = repository.findByUsername("Matthews", topTen);如果你需要知道结果的上下文(实际上是哪一页?它是第一个页面?总共有几页?),请Page用作返回类型:
public interface UserRepository extends Repository<User, Long> { Page<User> findByUsername(String username, Pageable pageable);}然后,客户端代码可以执行以下操作:
Pageable topTen = new PageRequest(0, 10);Page<User> result = repository.findByUsername("Matthews", topTen);Assert.assertThat(result.isFirstPage(), is(true));如果你将其Page用作返回类型,我们并不是会触发要执行的实际查询的计数预测,因为我们需要找出总共有多少个元素来计算元数据。除此之外,请确保你确实为配备了PageRequest排序信息,以获得稳定的结果。否则,即使下面的数据没有更改,你可能会触发两次查询并获得不同的结果。



