JPA语法大全

JPA语法大全

 

 

复杂查询

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

 

上一篇:应用速递 | 离线语音AI茶吧机


下一篇:[ElasticSearch系列六] 使用QueryBuilders、NativeSearchQuery实现es数据库对列表的各种操作{多条件,分页,排序,高亮显示(附高亮工具类)等}