Spring Data Commons 提供了一个查询关键字列表,用于在基于 Spring Data JPA 的存储库接口中构建动态查询,从而使开发人员能够轻松地使用关键字指定复杂的查询条件,例如相等、包含、排序和分页。通过使用这些关键字,开发人员可以编写更具表达性和可维护的查询,从而简化数据访问层。

Repository query keywords

Supported query method subject keywords

下表列出了 Spring Data 存储库查询派生机制通常支持的主体关键字,以表示谓词。有关受支持关键字的确切列表,请查阅特定存储区的文档,因为此处列出的某些关键字可能在特定存储区中不受支持。

Table 1. Query subject keywords
Keyword Description

find…Byread…Byget…Byquery…Bysearch…Bystream…By

通常返回存储库类型、CollectionStreamable 子类型或 PageGeoResults 或任何其他存储特定结果包装器的结果包装器的常规查询方法。可以作为 findBy…findMyDomainTypeBy… 使用,也可以与其他关键字结合使用。

exists…By

Exist 投影,通常返回 boolean 结果。

count…By

返回数字结果的计数投影。

delete…By, remove…By

删除查询方法,要么不返回结果 (void),要么返回删除计数。

…First<number>…, …Top<number>…

将查询结果限制为前 &lt;number&gt; 个结果。此关键字可在 find(和其他关键字)和 by 之间主体的任何位置出现。

…Distinct…

使用唯一查询以仅返回唯一结果。请参阅商店特定的文档以了解是否支持该功能。此关键字可在 find(和其他关键字)和 by 之间主体的任何位置出现。

Supported query method predicate keywords and modifiers

下表列出了 Spring Data 存储库查询派生机制通常支持的谓词关键字。但是,有关受支持关键字的确切列表,请查阅特定存储区的文档,因为此处列出的某些关键字可能在特定存储区中不受支持。

Table 2. Query predicate keywords
Logical keyword Keyword expressions

AND

And

OR

Or

AFTER

After, IsAfter

BEFORE

Before, IsBefore

CONTAINING

Containing, IsContaining, Contains

BETWEEN

Between, IsBetween

ENDING_WITH

EndingWith, IsEndingWith, EndsWith

EXISTS

Exists

FALSE

False, IsFalse

GREATER_THAN

GreaterThan, IsGreaterThan

GREATER_THAN_EQUALS

GreaterThanEqual, IsGreaterThanEqual

IN

In, IsIn

IS

IsEquals(或无关键字)

IS_EMPTY

IsEmpty, Empty

IS_NOT_EMPTY

IsNotEmpty, NotEmpty

IS_NOT_NULL

NotNull, IsNotNull

IS_NULL

Null, IsNull

LESS_THAN

LessThan, IsLessThan

LESS_THAN_EQUAL

LessThanEqual, IsLessThanEqual

LIKE

Like, IsLike

NEAR

Near, IsNear

NOT

Not, IsNot

NOT_IN

NotIn, IsNotIn

NOT_LIKE

NotLike, IsNotLike

REGEX

Regex, MatchesRegex, Matches

STARTING_WITH

StartingWith, IsStartingWith, StartsWith

TRUE

True, IsTrue

WITHIN

Within, IsWithin

除了过滤器谓词之外,还支持以下修改器列表:

Table 3. Query predicate modifier keywords
Keyword Description

IgnoreCase, IgnoringCase

与谓词关键字一起使用,用于不区分大小写的比较。

AllIgnoreCase, AllIgnoringCase

忽略所有适用属性的区分大小写。在查询方法谓词的某个位置使用。

OrderBy…

指定一个静态排序顺序,后跟属性路径和方向(例如:OrderByFirstnameAscLastnameDesc)。