附录

附录 A:命名空间参考

<repositories />元素

<repositories /> 元素用于触发 Spring Data 仓库基础设施的配置。其中最重要的属性是 base-package,它定义了用于扫描 Spring Data 仓库接口的包。参见“[repositories.create-instances.spring]”。下表描述了 <repositories /> 元素的属性:spring-doc.cadn.net.cn

表6. 属性
姓名 描述

base-packagespring-doc.cadn.net.cn

定义在自动检测模式下用于扫描扩展了 *Repository(具体接口由特定的 Spring Data 模块决定)的仓库接口的包。配置包之下的所有子包也会被一并扫描。允许使用通配符。spring-doc.cadn.net.cn

repository-impl-postfixspring-doc.cadn.net.cn

定义用于自动检测自定义仓库实现的后缀。类名以所配置后缀结尾的类将被视为候选者。默认值为 Implspring-doc.cadn.net.cn

query-lookup-strategyspring-doc.cadn.net.cn

确定用于创建查找器查询的策略。详情请参见“[repositories.query-methods.query-lookup-strategies]”。默认值为 create-if-not-foundspring-doc.cadn.net.cn

named-queries-locationspring-doc.cadn.net.cn

定义用于搜索包含外部定义查询的 Properties 文件的位置。spring-doc.cadn.net.cn

consider-nested-repositoriesspring-doc.cadn.net.cn

是否应考虑嵌套的仓库接口定义。默认值为 falsespring-doc.cadn.net.cn

附录 B:Populators 命名空间参考

<populator /> 元素

<populator /> 元素允许通过 Spring Data 存储库基础结构填充数据存储。[1]spring-doc.cadn.net.cn

表7. 属性
姓名 描述

locationsspring-doc.cadn.net.cn

应从何处找到文件,以填充仓库中用于读取对象的内容。spring-doc.cadn.net.cn

附录 C:仓库查询关键字

支持的查询方法主题关键词

下表列出了 Spring Data 仓库查询派生机制通常支持的主题关键字,用于表达谓词。 请查阅特定数据存储的文档以获取确切支持的关键字列表,因为此处列出的某些关键字可能在特定的数据存储中不受支持。spring-doc.cadn.net.cn

表8. 查询主题关键字
关键字 描述

find…By, read…By, get…By, query…By, search…By, stream…Byspring-doc.cadn.net.cn

通用查询方法,通常返回仓库类型、CollectionStreamable 的子类型,或诸如 PageGeoResults 等任意特定于数据存储的结果包装器。可作为 findBy…findMyDomainTypeBy… 使用,或与其他关键字组合使用。spring-doc.cadn.net.cn

exists…Byspring-doc.cadn.net.cn

Exists 投影,通常返回一个 boolean 类型的结果。spring-doc.cadn.net.cn

count…Byspring-doc.cadn.net.cn

返回数值结果的计数投影。spring-doc.cadn.net.cn

delete…By, remove…Byspring-doc.cadn.net.cn

删除查询方法,返回无结果(void)或删除记录的数量。spring-doc.cadn.net.cn

…First<number>…, …Top<number>…spring-doc.cadn.net.cn

将查询结果限制为前<number>条结果。该关键字可以出现在主题中find(以及其他关键字)与by之间的任意位置。spring-doc.cadn.net.cn

…Distinct…spring-doc.cadn.net.cn

使用一个 distinct 查询仅返回唯一的结果。请查阅特定数据存储的文档,以确认是否支持该特性。此关键字可以出现在主题中 find(以及其他关键字)和 by 之间的任意位置。spring-doc.cadn.net.cn

支持的查询方法谓词关键字和修饰符

下表列出了 Spring Data 仓库查询派生机制通常支持的谓词关键字。 然而,请查阅特定数据存储的文档以获取确切支持的关键字列表,因为此处列出的某些关键字在特定的数据存储中可能不受支持。spring-doc.cadn.net.cn

表9. 查询谓词关键字
逻辑关键字 关键字表达式

ANDspring-doc.cadn.net.cn

Andspring-doc.cadn.net.cn

ORspring-doc.cadn.net.cn

Orspring-doc.cadn.net.cn

AFTERspring-doc.cadn.net.cn

After, IsAfterspring-doc.cadn.net.cn

BEFOREspring-doc.cadn.net.cn

Before, IsBeforespring-doc.cadn.net.cn

CONTAININGspring-doc.cadn.net.cn

Containing, IsContaining, Containsspring-doc.cadn.net.cn

BETWEENspring-doc.cadn.net.cn

Between, IsBetweenspring-doc.cadn.net.cn

ENDING_WITHspring-doc.cadn.net.cn

EndingWith, IsEndingWith, EndsWithspring-doc.cadn.net.cn

EXISTSspring-doc.cadn.net.cn

Existsspring-doc.cadn.net.cn

FALSEspring-doc.cadn.net.cn

False, IsFalsespring-doc.cadn.net.cn

GREATER_THANspring-doc.cadn.net.cn

GreaterThan, IsGreaterThanspring-doc.cadn.net.cn

GREATER_THAN_EQUALSspring-doc.cadn.net.cn

GreaterThanEqual, IsGreaterThanEqualspring-doc.cadn.net.cn

INspring-doc.cadn.net.cn

In, IsInspring-doc.cadn.net.cn

ISspring-doc.cadn.net.cn

IsEquals(或无关键字)spring-doc.cadn.net.cn

IS_EMPTYspring-doc.cadn.net.cn

IsEmpty, Emptyspring-doc.cadn.net.cn

IS_NOT_EMPTYspring-doc.cadn.net.cn

IsNotEmpty, NotEmptyspring-doc.cadn.net.cn

IS_NOT_NULLspring-doc.cadn.net.cn

NotNull, IsNotNullspring-doc.cadn.net.cn

IS_NULLspring-doc.cadn.net.cn

Null, IsNullspring-doc.cadn.net.cn

LESS_THANspring-doc.cadn.net.cn

LessThan, IsLessThanspring-doc.cadn.net.cn

LESS_THAN_EQUALspring-doc.cadn.net.cn

LessThanEqual, IsLessThanEqualspring-doc.cadn.net.cn

LIKEspring-doc.cadn.net.cn

Like, IsLikespring-doc.cadn.net.cn

NEARspring-doc.cadn.net.cn

Near, IsNearspring-doc.cadn.net.cn

NOTspring-doc.cadn.net.cn

Not, IsNotspring-doc.cadn.net.cn

NOT_INspring-doc.cadn.net.cn

NotIn, IsNotInspring-doc.cadn.net.cn

NOT_LIKEspring-doc.cadn.net.cn

NotLike, IsNotLikespring-doc.cadn.net.cn

REGEXspring-doc.cadn.net.cn

Regex, MatchesRegex, Matchesspring-doc.cadn.net.cn

STARTING_WITHspring-doc.cadn.net.cn

StartingWith, IsStartingWith, StartsWithspring-doc.cadn.net.cn

TRUEspring-doc.cadn.net.cn

True, IsTruespring-doc.cadn.net.cn

WITHINspring-doc.cadn.net.cn

Within, IsWithinspring-doc.cadn.net.cn

除了过滤谓词外,还支持以下修饰符列表:spring-doc.cadn.net.cn

表10. 查询谓词修饰符关键字
关键字 描述

IgnoreCase, IgnoringCasespring-doc.cadn.net.cn

与谓词关键字一起使用,用于不区分大小写的比较。spring-doc.cadn.net.cn

AllIgnoreCase, AllIgnoringCasespring-doc.cadn.net.cn

忽略所有合适属性的大小写。在查询方法谓词中的某处使用。spring-doc.cadn.net.cn

OrderBy…spring-doc.cadn.net.cn

指定一个静态排序顺序,后跟属性路径和方向(例如:OrderByFirstnameAscLastnameDesc)。spring-doc.cadn.net.cn

附录 D:仓库查询返回类型

支持的查询返回类型

下表列出了 Spring Data 仓库通常支持的返回类型。 然而,请查阅特定数据存储的文档以获取确切支持的返回类型列表,因为此处列出的某些类型可能在特定的数据存储中不受支持。spring-doc.cadn.net.cn

地理空间类型(例如 GeoResultGeoResultsGeoPage)仅适用于支持地理空间查询的数据存储。 某些存储模块可能会定义自己的结果包装类型。
表11. 查询返回类型
返回类型 描述

voidspring-doc.cadn.net.cn

表示无返回值。spring-doc.cadn.net.cn

基本类型spring-doc.cadn.net.cn

Java 基本数据类型。spring-doc.cadn.net.cn

包装类型spring-doc.cadn.net.cn

Java 包装类型。spring-doc.cadn.net.cn

Tspring-doc.cadn.net.cn

一个唯一实体。期望查询方法最多返回一个结果。如果未找到结果,则返回null。若返回结果超过一个,则会触发IncorrectResultSizeDataAccessException异常。spring-doc.cadn.net.cn

Iterator<T>spring-doc.cadn.net.cn

An Iterator.spring-doc.cadn.net.cn

Collection<T>spring-doc.cadn.net.cn

A Collection.spring-doc.cadn.net.cn

List<T>spring-doc.cadn.net.cn

A List.spring-doc.cadn.net.cn

Optional<T>spring-doc.cadn.net.cn

一个 Java 8 或 Guava 的 Optional。期望查询方法最多返回一个结果。如果未找到结果,则返回 Optional.empty()Optional.absent()。若返回结果超过一个,则会抛出 IncorrectResultSizeDataAccessException 异常。spring-doc.cadn.net.cn

Option<T>spring-doc.cadn.net.cn

Scala 或 Vavr 的 Option 类型。语义上与前面所述的 Java 8 的 Optional 行为相同。spring-doc.cadn.net.cn

Stream<T>spring-doc.cadn.net.cn

一个 Java 8 Streamspring-doc.cadn.net.cn

Streamable<T>spring-doc.cadn.net.cn

Iterable 的一个便捷扩展,直接提供了用于流式处理、映射和过滤结果、连接结果等的方法。spring-doc.cadn.net.cn

实现 Streamable 接口,并接受 Streamable 类型作为构造函数或工厂方法参数的类型spring-doc.cadn.net.cn

暴露一个构造函数或接受 ….of(…) 作为参数的 ….valueOf(…)/Streamable 工厂方法的类型。详情请参见 [repositories.collections-and-iterables.streamable-wrapper]spring-doc.cadn.net.cn

Vavr SeqListMapSetspring-doc.cadn.net.cn

Vavr 集合类型。详情请参见 [repositories.collections-and-iterables.vavr]spring-doc.cadn.net.cn

Future<T>spring-doc.cadn.net.cn

一个 Future。要求方法使用 @Async 注解,并且需要启用 Spring 的异步方法执行功能。spring-doc.cadn.net.cn

CompletableFuture<T>spring-doc.cadn.net.cn

一个 Java 8 的 CompletableFuture。要求方法使用 @Async 注解,并且需要启用 Spring 的异步方法执行功能。spring-doc.cadn.net.cn

ListenableFuturespring-doc.cadn.net.cn

一个 org.springframework.util.concurrent.ListenableFuture。要求方法使用 @Async 注解,并且需要启用 Spring 的异步方法执行功能。spring-doc.cadn.net.cn

Slice<T>spring-doc.cadn.net.cn

一个带有大小的数据块,并附带一个指示,表明是否还有更多数据可用。需要一个 Pageable 类型的方法参数。spring-doc.cadn.net.cn

Page<T>spring-doc.cadn.net.cn

一个包含附加信息(例如结果总数)的Slice。需要一个Pageable类型的方法参数。spring-doc.cadn.net.cn

GeoResult<T>spring-doc.cadn.net.cn

一个包含附加信息的结果条目,例如到参考位置的距离。spring-doc.cadn.net.cn

GeoResults<T>spring-doc.cadn.net.cn

一个包含GeoResult<T>的列表,附带额外信息,例如到参考位置的平均距离。spring-doc.cadn.net.cn

GeoPage<T>spring-doc.cadn.net.cn

一个包含 PageGeoResult<T>,例如到参考位置的平均距离。spring-doc.cadn.net.cn

Mono<T>spring-doc.cadn.net.cn

一个使用响应式仓库的 Project Reactor Mono,可发出零个或一个元素。期望查询方法最多返回一个结果。如果未找到结果,则返回 Mono.empty()。若返回结果多于一个,则会触发 IncorrectResultSizeDataAccessExceptionspring-doc.cadn.net.cn

Flux<T>spring-doc.cadn.net.cn

使用响应式仓库的 Project Reactor Flux,可发出零个、一个或多个元素。返回 Flux 的查询也可以发出无限数量的元素。spring-doc.cadn.net.cn

Single<T>spring-doc.cadn.net.cn

使用响应式仓库的 RxJava Single,用于发射单个元素。期望查询方法最多返回一个结果。如果未找到结果,则返回 Mono.empty()。若返回结果多于一个,则会触发 IncorrectResultSizeDataAccessExceptionspring-doc.cadn.net.cn

Maybe<T>spring-doc.cadn.net.cn

使用响应式仓库的 RxJava Maybe,可发出零个或一个元素。期望查询方法最多返回一个结果。如果未找到结果,则返回 Mono.empty()。若返回结果多于一个,则会触发 IncorrectResultSizeDataAccessExceptionspring-doc.cadn.net.cn

Flowable<T>spring-doc.cadn.net.cn

使用响应式仓库的 RxJava Flowable,可发出零个、一个或多个元素。返回 Flowable 的查询也可以发出无限数量的元素。spring-doc.cadn.net.cn