springJpa關於Date查詢

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章