1. 精确到某一天
if(geReqMain.getInputDate()!=null){
list.add(cb.equal(root.<Date> get("inputDate"), geReqMain.getInputDate()));
}
2.时间段查询
传入一个开始时间(beginDate)以及结束时间(endDate)与某个时间(someTime)进行比较:
restrictions = criteriaBuilder.and(restrictions, criteriaBuilder.greaterThanOrEqualTo(root.<Date> get("someTime"), beginDate));
restrictions = criteriaBuilder.and(restrictions, criteriaBuilder.lessThanOrEqualTo(root.<Date> get("someTime"), endDate));
其实就是两个方法不一样:大于用greaterThanOrEqualTo(...)和小于用lessThanOrEqualTo(...)
if (invoiceCreateStart != null) {
predicateList.add(criteriaBuilder.greaterThanOrEqualTo(root.get("firstInsert").as(Date.class), invoiceCreateStart));
}
if (invoiceCreateEnd != null) {
predicateList.add(criteriaBuilder.lessThanOrEqualTo(root.get("firstInsert").as(Date.class), invoiceCreateEnd));
}
模糊查询
if (!StringUtils.isEmpty(geReqMain.getReqNode())) {
list.add(cb.like(root.get("reqNode").as(String.class), "%"+ geReqMain.getReqNode().trim() + "%"));
}
public Page<GeBreakDownInfoMain> findGeBreakDownInfoMainDtoList(
final GeBreakDownInfoMain geBreakDownInfoMain, Pager pager) {
Page<GeBreakDownInfoMain> pages = null;
Pageable pr = new PageRequest(pager.getPageNum() - 1,
pager.getNumPerPage());
pages = geBreakDownInfoMainDao.findAll(new Specification<GeBreakDownInfoMain>() {
public Predicate toPredicate(Root<GeBreakDownInfoMain> root,
CriteriaQuery<?> query, CriteriaBuilder cb) {
if (null == geBreakDownInfoMain) {
return null;
}
List<Predicate> list = new ArrayList<Predicate>();
// 加入查询条件
if (!StringUtils.isEmpty(geBreakDownInfoMain.getUserCode())) {
list.add(cb.like(root.get("userCode").as(String.class), "%"
+ geBreakDownInfoMain.getUserCode().trim() + "%"));
}
if (!StringUtils.isEmpty(geBreakDownInfoMain.getBreakDownReason())) {
list.add(cb.like(root.get("breakDownReason").as(String.class), "%"
+ geBreakDownInfoMain.getBreakDownReason().trim() + "%"));
}
if(geBreakDownInfoMain.getBreakDownStartTime()!=null){
list.add(cb.greaterThanOrEqualTo(root.<Date> get("breakDownSendMailTime"),geBreakDownInfoMain.getBreakDownStartTime()));
}
if(geBreakDownInfoMain.getBreakDownEndTime()!=null){
list.add(cb.lessThanOrEqualTo(root.<Date> get("breakDownSendMailTime"),geBreakDownInfoMain.getBreakDownEndTime()));
}
List<Order> lists = new ArrayList<Order>();
lists.add(cb.desc(root.get("breakDownSeqNo").as(String.class)));
query.orderBy(lists);
Predicate[] p = new Predicate[list.size()];
return cb.and(list.toArray(p));
}
}, pr);
return pages;
}