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