概念

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