Spring boot 分页方式

import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.util.StringUtils;


// 获取排序方式
public static Sort getSort(String sortType, String sortColumn) throws IllegalArgumentException {
        String defaultColumn = "id";
        Sort.Direction direction;
        if(!StringUtils.hasText(sortType)) {
            direction = Sort.Direction.DESC;
        } else{
            direction = Sort.Direction.fromString(sortType);
        }
        return new Sort(direction, StringUtils.hasText(sortColumn) ? sortColumn : defaultColumn);
    }

// 获取分页
public static Pageable getPageable(Integer pageIndex, Integer pageSize, Sort sort) throws IllegalArgumentException {
        return PageRequest.of((pageIndex == null || pageIndex < 0)? 0: pageIndex,
                (pageSize == null || pageSize < 0)?10:pageSize, sort);
    }
public Page<FeedbackDO> getFeedbackHistory() {
        Sort sort = PageUtil.getSort("isAsc", "id");
        int pageNum = 10;
        int pageSize = 10;
        Pageable pageable = PageUtil.getPageable(pageNum - 1, pageSize,sort);
        // 有查询条件
        Specification<FeedbackDO> dictSpecification = (Specification<FeedbackDO>) (root, criteriaQuery, criteriaBuilder)
                -> PredicateUtil.handleQueryCondition(criteriaBuilder, root, null);
        Page<FeedbackDO> all = feedbackRepository.findAll(dictSpecification, pageable);
        // 没有查询条件
        Page<FeedbackDO> all2 = feedbackRepository.findAll(pageable);
        
        return all;
     // 需要对查询结果处理时
    
List<FeedbackVO> list = new ArrayList<>();
  
      for (FeedbackDO feedbackDO:all){
        FeedbackVO vo = new FeedbackVO();
    BeanHelperUtil.copyNotNullProperties(feedbackDO,vo);
    list.add(vo);
    }
     return new PageImpl<>(list,pageable,all.getTotalElements());
    }

 1. 以上时Jpa findAll分页

 2. 以下PageListHolder分页;

import org.springframework.beans.support.PagedListHolder;

PagedListHolder<AssignmentVO> pagedListHolder = new PagedListHolder<>(resultList); // resultList 是需要返回的结果集(总的)
pagedListHolder.setPageSize(queryDTO.getPageSize()); // 设置页面显示数
pagedListHolder.setPage(queryDTO.getPageNum() - 1); // 设置页面
getNrOfElements 是
pageList 是当前内容
nrOfElements 是数据总数
pageCount 是总页数
page 是当前页
pageSize 是当前每页展示数量

 

posted @ 2020-05-13 09:20  文字章  阅读(508)  评论(0)    收藏  举报