springDateJPA的query多条件模糊查询



@Override

public List<VendorDict> findVendorByTerm(String term) {

// TODO Auto-generated method stub

List<VendorDict> list=orthopaedicsVendorDao.findAll(findVendorByTermGetWhere(term));

Sort sort=new Sort(Sort.Direction.DESC,“vendorName”);

return list;

}

public Specification<VendorDict> findVendorByTermGetWhere(String term){

String condition="%"+term+"%";

return new Specification<VendorDict>() {

@Override

      public Predicate toPredicate(Root<VendorDict> root, CriteriaQuery<?> query, CriteriaBuilder cb) {

// TODO Auto-generated method stub

Predicate p1=cb.like(root.get(“vendorName”).as(String.class),condition);

Predicate p2=cb.like(root.get(“id”).as(String.class),condition);

query.where(cb.or(p1,p2));

query.orderBy(cb.desc(root.get(“vendorName”)));

return query.getRestriction();

      }
   };
}

private Specification<Order> findOperateRoomRequestOrderGetWhere(OrderDto dto){

return ((root, query, cb) -> {

List<Predicate> predicateList = new ArrayList<>();

if (!StringUtils.isBlank(dto.getOrderNo())) {

Predicate p1 = cb.like(root.get(“orderNo”).as(String.class),"%" + dto.getOrderNo()

+ “%”);

predicateList.add(p1);

        }

Predicate p2 = cb.equal(root.get(“orderType”).as(String.class),“13”);

predicateList.add(p2);

if (dto.getStatus()!=null&&!(dto.getStatus().equals("-1"))){

Predicate p3 = cb.equal(root.get(“status”).as(String.class),dto.getStatus());

predicateList.add(p3);

        }

if (dto.getStartDate()!=null&&dto.getEndDate()!=null){

Predicate p4 =

cb.between(root.get(“createTime”).as(Date.class),dto.getStartDate(),dto.getEndDate());

predicateList.add(p4);

        }

Predicate[] pre = new Predicate[predicateList.size()];

query.where(predicateList.toArray(pre));

return query.getRestriction();

});

}