分頁Page對象使用


之前不管是mysql還是mongo等數據庫,都喜歡自己造輪子去做分頁查詢。現在用Page來實現分頁

下面實現2個功能點:

1、查詢勛章實體的Page,含分頁信息、勛章列表

2、勛章Page轉勛章DTO對象Page,dto為列表功能所需數據。使用語法:new PageImpl(dtoList, pageable, medalPage.getTotalElements()

public Page<MedalListDTO> listMedal(Pageable pageable, MedalListQuery medalListQuery) {
Criteria criteria = new Criteria();
if (null != medalListQuery.getStatus()) {
criteria = criteria.and("status").is(medalListQuery.getStatus());
}
if(StringUtils.isNotBlank(medalListQuery.getChannelId())){
criteria = criteria.and("channelId").is(medalListQuery.getChannelId());
}
if(StringUtils.isNotBlank(medalListQuery.getName())){
criteria = criteria.and("name").is(medalListQuery.getName());
}
// 獲取勛章的pege對象
Page<Medal> medalPage = medalRepository.findBy(criteria, pageable);
List<Medal> medals = medalPage.getContent();
   List<MedalListDTO> dtoList = medals.stream().map(new Function<Medal, MedalListDTO>() {
  @Override
  public MedalListDTO apply(Medal medal) {
  MedalListDTO dto = new MedalListDTO();
xxx....
return dto;
}
   }).collect(Collectors.toList());
   return new PageImpl(dtoList, pageable, medalPage.getTotalElements();

}
  

Page接口如下:

public interface Page<T> extends Slice<T> {
    static <T> Page<T> empty() {
        return empty(Pageable.unpaged());
    }

    static <T> Page<T> empty(Pageable pageable) {
        return new PageImpl(Collections.emptyList(), pageable, 0L);
    }

    int getTotalPages();

    long getTotalElements();

    <U> Page<U> map(Function<? super T, ? extends U> var1);
}

 

返回值:

{
  "rt": {
    "status": 200,
    "appId": "xxx",
    "debug": null
  },
  "data": {
    "content": [
      {
        "id": "82a21594-8bf3-44a9-a2f2-f3554a958cf0",
        "name": "11",
        "channelName": "22",
        "taskTeamName": "22222",
        "createdDate": "2020-05-28T08:58:15.843+0000",
        "status": "已上架",
        "passRate": 0.92,
        "joinedCount": 3,
        "passedCount": 3,
        "passedRate": 1,
        "questionsCount": 10
      }
    ],
    "pageable": {
      "sort": {
        "sorted": false,
        "unsorted": true,
        "empty": true
      },
      "offset": 0,
      "pageNumber": 0,
      "pageSize": 2,
      "paged": true,
      "unpaged": false
    },
    "totalElements": 4,
    "totalPages": 2,
    "last": false,
    "size": 2,
    "number": 0,
    "sort": {
      "sorted": false,
      "unsorted": true,
      "empty": true
    },
    "numberOfElements": 2,
    "first": true,
    "empty": false
  },
  "success": true
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM