【Spring连载】使用Spring Data的Repositories----存储库查询返回类型

发布于:2024-03-02 ⋅ 阅读:(58) ⋅ 点赞:(0)

【Spring连载】使用Spring Data的Repositories----存储库查询返回类型

支持的查询返回类型

下表列出了Spring Data存储库通常支持的返回类型。但是,有关支持的返回类型的确切列表,请参阅特定存储的文档,因为此处列出的某些类型在特定存储中可能不受支持。
地理空间类型(如GeoResult、GeoResults和GeoPage)仅适用于支持地理空间查询的数据存储。一些存储模块可以定义自己的结果包装器类型。
表1:查询返回类型

返回类型 描述
void 表示没有返回值。
primitives Java primitives.
Wrapper types Java wrapper types.
T 一个独特的实体。要求查询方法最多返回一个结果。如果未找到结果,则返回null。多个结果触发IncorrectResultSizeDataAccessException。
Iterator< T> 一个迭代器
Collection< T> 一个集合
List< T> 一个List
Optional< T> Java 8或Guava Optional。要求查询方法最多返回一个结果。如果找不到结果,则返回Optional.empty() 或Optional.absent()。多个结果触发IncorrectResultSizeDataAccessException。
Option< T> Scala或Vavr Option类型。在语义上与前面描述的Java8的Optional行为相同。
Stream< T> Java 8 Stream.
Streamable< T> Iterable的一个方便扩展,它直接向流公开方法,map、filter results、concatenate 它们等。
实现Streamable并采用Streamable构造函数或工厂方法参数的类型 以Streamable为参数公开构造函数或….of(…)/….valueOf(…)工厂方法的类型。有关详细信息,请参阅21.4.2 返回自定义流包装类型。
Vavr Seq, List, Map, Set Vavr集合类型。有关详细信息,请参阅21.4.3 Vavr集合的支持。
Future< T> A Future。需要用@Async注解方法,并要求开启Spring的异步方法执行能力。
CompletableFuture< T> 一个Java 8 CompletableFuture。要求用@Async注解方法,并要求启用Spring的异步方法执行功能。
Slice< T> 一个不大的数据块,显示是否有更多可用的数据。需要一个Pageable的方法参数。
Page< T> 包含附加信息的切片,例如结果总数。需要Pageable方法参数。
Window< T> 从滚动查询中获得的结果Window。提供ScrollPosition以发出下一个滚动查询。需要ScrollPosition方法参数。
GeoResult< T> 带有附加信息的结果条目,例如到参考位置的距离。
GeoResults< T> 包含附加信息的GeoResult< T>列表,例如到参考位置的平均距离。
GeoPage< T> GeoResult< T>的Page,例如到参考位置的平均距离。
Mono< T> Project Reactor Mono使用reactive存储库发射零个或一个元素。要求查询方法最多返回一个结果。如果没有找到结果,则返回Mono.empty()。多个结果触发IncorrectResultSizeDataAccessException。
Flux< T> 使用reactive存储库发出零、一个或多个元素的Project Reactor Flux。返回Flux的查询也可以发出无限数量的元素。
Single< T> RxJava Single使用reactive存储库发出单个元素。期望查询方法最多返回一个结果。如果没有找到结果,则返回Mono.empty()。不止一个结果触发IncorrectResultSizeDataAccessException。
Maybe< T> RxJava可能使用reactive存储库发出零或一个元素。期望查询方法最多返回一个结果。如果没有找到结果,则返回Mono.empty()。不止一个结果触发IncorrectResultSizeDataAccessException。
Flowable< T> RxJava Flowable使用reactive存储库发出零个、一个或多个元素。返回Flowable的查询也可以发出无限数量的元素。

网站公告

今日签到

点亮在社区的每一天
去签到