java spring boot jpa Specification 查询 日期区间
需求sql
select * FROM book where tenantId=1 and clockIn between "2022-05-01" and "2022-05-31"
具体代码如下
LocalDate finalFirstDayOfMonth = LocalDate.parse("2022-05-01");
LocalDate finalLastDayOfMonth = LocalDate.parse("2022-05-31");
log.info("finalFirstDayOfMonth={}", finalFirstDayOfMonth);
log.info("finalLastDayOfMonth={}", finalLastDayOfMonth);
Specification<Book> specification = (root, criteriaQuery, cb) -> {
List<Predicate> list = Lists.newArrayList();
//
list.add(cb.equal(root.get("tenantId"), "1"));
//
list.add(cb.between(root.get("clockIn").as(LocalDate.class), finalFirstDayOfMonth, finalLastDayOfMonth));
//
return cb.and(list.toArray(new Predicate[list.size()]));
};
Optional<List<Book>> all = findAll(specification);