JPA单表多条件查询

1.Repository层:

public interface XRepository extends JpaRepository<X,主键id类型>,JpaSpecificationExecutor<X> {}

2.service层:

R<PageVo> findDecorationSingleList(String style, String functionalRoom, String part, String color, String page, String rows);

3.serviceImpl层

 @Override
  public R<PageVo> findDecorationSingleList(String style, String functionalRoom, String part, String color, String page, String rows) {
      Page<DecorationSingle> decorationSingleList=null;
      Sort sort = new Sort(Sort.Direction.DESC, "addTime");
      PageRequest pageRequest =  new PageRequest(Integer.parseInt(page)-1, Integer.parseInt(rows), sort);
      Specification specification=new Specification<DecorationSingle>(){
          @Override
          public Predicate toPredicate(Root<DecorationSingle> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
              List<Predicate> predicates = new ArrayList<Predicate>();
              if(StringUtils.isNotBlank(style)){
                  predicates.add(builder.equal(root.get("style"), style));
              }
              if(StringUtils.isNotBlank(functionalRoom)){
                  predicates.add(builder.equal(root.get("functionalRoom"), functionalRoom));
              }
              if(StringUtils.isNotBlank(part)){
                  predicates.add(builder.equal(root.get("part"), part));
              }
              if(StringUtils.isNotBlank(color)){
                  predicates.add(builder.equal(root.get("color"), color));
              }
              predicates.add(builder.equal(root.get("singleStatus"), 0));
            return builder.and(predicates.toArray(new Predicate[predicates.size()]));
          }
      };
      decorationSingleList=decorationSingleRepository.findAll(specification,pageRequest);
List<DecorationSingleVO> decorationSingleVO = new ArrayList<>();
for (DecorationSingle decorationSingle:decorationSingleList){
   DecorationSingleVO decorationSingleVo = new DecorationSingleVO();
   BeanUtils.copyProperties(decorationSingle,decorationSingleVo);
   decorationSingleVO.add(decorationSingleVo);
}

return new  R<>(new PageVo((int)decorationSingleList.getTotalElements(),Integer.valueOf(page),Integer.valueOf(rows),decorationSingleVO));
  }

猜你喜欢

转载自blog.csdn.net/weixin_39643007/article/details/82117808