使用 Spring Data Repositories(中)

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原标题: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。通常,通过调用存储库方法返回类集合类型并手动创建包装器类型的实例来使

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技能咖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值