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;
}