概念
RepositoryEnhancer
当开发人员需要编写统计类的查询语句时,Repository实现此接口即可。
非统计类查询请使用SpecificationFactory
,同样支持查询语句动态拼接
实现RepositoryEnhancer
接口之后,可以实现创建自定义查询,根据传入的Sort
对象生成order by子句等功能
SpecificationFactory
查询条件构建工具,支持通过传入QO的方式获取Specification
(JPA查询条件)。
@QueryCondition
核心注解,作用在字段上,该字段为查询条件,可以指定目标字段、匹配方式等。
属性说明:
field:作用的目标字段名,默认为该字段名。
支持以数组形式传入多个目标字段,当存在多个目标字段时,关系为“或”,即多个字段有一个满足条件即可。
支持使用
.
表示嵌套的属性。支持使用
+
表示数据库多字段连接操作。支持使用
*
表示一对多/多对多关联属性。
targetField:同field,不再建议使用。
type:匹配类型,默认值为
ConditionType.EQUAL
(严格相等),详细说明参见下面的ConditionType
的说明。policy:对空值的处理逻辑,默认值为
NullPolicy.IGNORE
(忽略查询条件中的空值)。group:条件分组,同组的条件关系为“或”。
datePolicy:日期策略,默认值为
DatePolicy.NONE
(不处理),详细说明参见下面的DatePolicy
的说明。trim:是否自动对字符串首尾去空白,默认为
true
。ignoreCase:是否忽略大小写,默认为
true
。
@QueryObject
作用在类上,表示此类中所有属性均为查询条件,可以简化@QueryCondition
配置。
ConditionType
匹配方式,详见枚举值说明。
可用的枚举值说明:
EQUAL:严格相等
NOT_EQUAL:不相等
STARTS_WITH:匹配开头
ENDS_WITH:匹配结尾
CONTAINS:全模糊匹配
GREATER_THAN:大于
NOT_GREATER_THAN:小于或等于
LESS_THAN:小于
NOT_LESS_THAN:大于或等于
IN:包含于
NullPolicy
查询条件中的空值处理方式,详见枚举值说明。
可用的枚举值说明:
IGNORE:忽略查询条件中的空值
INCLUDE:包含查询条件中的空值(对应查询语句中的
IS NULL
)
DatePolicy
查询条件中的日期处理方式,可以取特定时间粒度的开始和结束。
处理方式支持START/END,时间粒度支持YEAR/MONTH/DAY/HOUR/MINUTE/SECOND。
枚举值是处理方式_OF_粒度,例如:
START_OF_DAY:表示获取参数日期当天的开始
END_OF_YEAR:表示获取参数日期当年的结束
Last updated