原标题:Spring认证|使用 Spring Data Repositories(中)来源:(Spring中国教育管理中心)
4.4.5. 限制查询结果
您可以使用first或top关键字来限制查询方法的结果,这两个关键字可以互换使用。您可以将一个可选的数值附加到top或first指定要返回的最大结果大小。如果忽略该数字,则假定结果大小为 1。以下示例显示了如何限制查询大小:
示例 20. 使用Top和限制查询的结果大小First
User findFirstByOrderByLastnameAsc();
User findTopByOrderByAgeDesc();
Page queryFirst10ByLastname(String lastname, Pageable pageable);
Slice findTop3ByLastname(String lastname, Pageable pageable);
List findFirst10ByLastname(String lastname, Sort sort);
List findTop10ByLastname(String lastname, Pageable pageable);
限制表达式还支持Distinct支持不同查询的数据存储的关键字。此外,对于将结果集限制为一个实例的查询,Optional支持将结果用关键字包装。
如果分页或切片应用于限制查询分页(以及可用页数的计算),则在受限结果内应用。
通过使用Sort参数限制结果与动态排序相结合,您可以表达“K”最小元素和“K”最大元素的查询方法。
4.4.6. 返回集合或可迭代对象的存储库方法
查询方法,返回多个结果可以使用标准的Java Iterable,List和Set。除此之外,我们支持返回 Spring Data 的Streamable、 的自定义扩展Iterable以及Vavr提供的集合类型。请参阅解释所有可能的查询方法返回类型的附录。
使用 Streamable 作为查询方法返回类型
您可以使用任何集合类型的Streamable替代Iterable品。它提供了访问非并行Stream(缺少 from Iterable)的便捷方法,以及直接….filter(…)和….map(…)覆盖元素并将其连接Streamable到其他元素的能力:
示例 21. 使用 Streamable 组合查询方法结果
interface PersonRepository extends Repository {
Streamable findByFirstnameContaining(String firstname);
Streamable findByLastnameContaining(String lastname);
}
Streamable result = repository.findByFirstnameContaining(“av”)
.and(repository.findByLastnameContaining(“ea”));
返回自定义流包装器类型
为集合提供专用包装器类型是一种常用模式,用于为返回多个元素的查询结果提供 API。通常,通过调用存储库方法返回类集合类型并手动创建包装器类型的实例来使

本文详细介绍了Spring Data Repositories中如何限制查询结果,包括使用first和top关键字,以及结合Sort参数进行动态排序。此外,还讨论了返回集合、可迭代对象、Streamable、自定义流包装器类型和Vavr集合的支持。同时,提到了存储库方法的空处理,可使用Optional、Guava的Optional、Scala的Option和Vavr的Option。文章还探讨了Java 8的Stream作为查询结果类型以及异步查询结果。最后,简述了如何创建存储库实例,包括XML配置和Java配置的方式。
最低0.47元/天 解锁文章
1053

被折叠的 条评论
为什么被折叠?



