zl程序教程

您现在的位置是:首页 > 

当前栏目

JPA语法大全 特别是JPA的不等于[通俗易懂]

通俗易懂 大全 语法 等于 jpa 特别
2023-06-13 09:11:13 时间

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

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/184419.html原文链接:https://javaforall.cn