JPA語法大全(特別是JPA的!=不等於)

JPA語法大全(特別是JPA的!=不等於)

Keyword:爲關鍵詞
Sample:爲直接用在方法名上的例子
JPQLsnipper:爲JPQL,@Query的寫法的例子

在這裏插入圖片描述

複雜查詢


	@Override
	public JSONResult<PageResult<OrdOfflineOrderVO>> findOfflineOrder(OrdOfflineOrderSearchVO vo) {

		Page<OrdOfflineOrderPO> page= ordOfflineOrderRepository.findAll(new Specification<OrdOfflineOrderPO>() {

			@Override
			public Predicate toPredicate(Root<OrdOfflineOrderPO> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
				List<Predicate> list = new ArrayList<Predicate>();
				if(StringUtils.isNotBlank(vo.getProductName())){
					list.add(criteriaBuilder.like(root.get("productName").as(String.class), "%"+vo.getProductName()+"%"));
				}
				if (vo.getStartTime()!=null) {
					//大於或等於傳入時間
					list.add(criteriaBuilder.greaterThanOrEqualTo(root.get("createTimestamp").as(Date.class), vo.getStartTime()));
				}
				if (vo.getEndTime()!=null) {
					//小於或等於傳入時間
					list.add(criteriaBuilder.lessThanOrEqualTo(root.get("createTimestamp").as(Date.class), vo.getEndTime()));
				}


				Predicate[] predicates = new Predicate[list.size()];
				return criteriaBuilder.and(list.toArray(predicates));
			}
		},vo.toPageRequest());
		List<OrdOfflineOrderVO> list=new ArrayList<>();
		 page.getContent().forEach(po->{
			 OrdOfflineOrderVO orderVO=new OrdOfflineOrderVO();
			 BeanUtils.copyProperties(po,orderVO);
			 list.add(orderVO);
		 });
		PageResult<OrdOfflineOrderVO> result = PageResult.of(page.getNumber(), page.getTotalPages(), page.getTotalElements(), list);
		return new JSONResult(result);
	}
發佈了10 篇原創文章 · 獲贊 4 · 訪問量 1828
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章