[英]spring data findBy return type
spring 数据 findBy 方法的可能返回类型是什么? 我没有在任何地方找到任何综合列表。
像 findByXXX 可以返回
1) Entity
2) Optional<Entity>
3) List<Entity>
4) Stream<Entity>
还有更多,但我们有明确的清单吗?
此外, List<Entity>
在未找到数据时返回 emptyList 但Stream<Entity>
在未找到数据时返回 null,因此当您在流上应用 map/filter 等时,您将获得 NPE。
除了在调用流函数之前物理检查 null 之外,是否有更好的方法来使用 Stream 而不会导致 NPE。
您可能的返回类型列表是正确的。 当您需要对结果进行分页时,您也可以使用Page和Slice类型。 见示例:
Page<User> findByLastname(String lastname, Pageable pageable);
Slice<User> findByLastname(String lastname, Pageable pageable);
“第一种方法允许您将 org.springframework.data.domain.Pageable 实例传递给查询方法,以将分页动态添加到静态定义的查询中。页面知道可用元素和页面的总数。它通过触发计数查询以计算总数的基础设施。由于这可能是昂贵的,具体取决于所使用的商店,因此 Slice 可以用作返回。Slice 只知道是否有下一个 Slice 可用,这在步行时可能就足够了更大的结果集。” - 查看更多信息: Spring Data Documentation
对于另一个问题,您可以使用 Guava/Java 8 Optional 。 这样,您的查询方法将返回一个包含找到的对象的 Optional 或一个空的 Optional。 Optional是一种用非空值替换可为空的 T 引用的方法,请参见示例:
Optional<User> findById(Long id);
我希望我有帮助你。 =)
虽然有点晚,但支持的返回类型记录在此处:
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repository-query-return-types
通常,返回类型可以是以下任何类别:
- 无效
- 原语
- 包装类型
- 吨
- 迭代器
- 收藏
- 列表
- 可选
- 选项
- 流
- 流媒体
- 实现 Streamable 并采用 Streamable 构造函数或工厂方法参数的类型
- Vavr Seq, List, Map, Set
- 未来
- 可完成的未来
- 未来可听
- 切片
- 页面
- 地理结果
- 地理结果
- 地理页面
- 单声道
- 助焊剂
- 单身
- 也许
- 流动的
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.