JPA分页查询条件查询

146 阅读1分钟

`public List query(ReportQuery query) {

    // 构造自定义查询条件

    Specification specification = new Specification() {

        @Override

        public Predicate toPredicate(Root root, CriteriaQuery criteriaQuery, CriteriaBuilder criteriaBuilder) {

        // 可以多个条件  所以是数组

            ArrayList predicateList = new ArrayList<>();

            //关键字

            if (query.getTitle() != null) {

                Predicate title = criteriaBuilder.like(root.get("title"), "%" + query.getTitle() + "%");

                predicateList.add(title);

            }

            Predicate[] predicates = predicateList.toArray(new Predicate[predicateList.size()]);

            return criteriaBuilder.and(predicates);

        }

    };

    //排序

    Sort sort = Sort.by(Sort.Direction.DESC, "createTime");

    return reportRepository.findAll(specification,sort);`