时间处理
根据时间段查询数据的场景,前端通常只给出日期而不包括时间,例如:startDate=2019-01-01&endDate=2019-01-01
表示查询2019年1月1日全天(2019-01-01 00:00:00~2019-01-01 23:59:59)的数据。@QueryCondition
注解提供datePolicy
配置,支持对参数中时间的处理(取特定时间粒度的开始/结束)。
class Foo {
Long id;
Date birthday;
}
class FooQo {
@QueryCondition(field="birthday", datePolicy=DatePolicy.START_OF_DAY, type=Condition.NOT_LESS_THAN)
Date startDate;
@QueryCondition(field="birthday", datePolicy=DatePolicy.END_OF_DAY, type=Condition.NOT_GREATER_THAN)
Date endDate;
}
FooQo fooQo = new FooQo("foo", "2019-01-01", "2019-01-01");
Specification<Foo> specification = SpecificationFactory.getSpecification(fooQo);
List<Foo> foos = fooRepository.findAll(specification);
生成的SQL:
SELECT * FROM FOO
WHERE FOO.BIRTHDAY >= '2019-01-01 00:00:00'
AND FOO.BIRTHDAY <= '2019-01-01 23:59:59';
Last updated