如何在 Spring Boot 中设置 PageImpl 类的 TotalPages
Posted
技术标签:
【中文标题】如何在 Spring Boot 中设置 PageImpl 类的 TotalPages【英文标题】:How to set TotalPages of a PageImpl class in spring boot 【发布时间】:2021-07-16 16:21:59 【问题描述】:我正在使用 PageImpl 类将页面转换为新页面,但 totalpages 属性的默认值为 0。我想将 totalPages 设置为特定数字。可以改吗?
代码
public Page<InformationDTO> getInformationById(String classId, int page, int size)
Pageable pageable = PageRequest.of(page, size);
List<Information> InformationList = informationRepository.findByClassIdOrderByCreateDateDesc(classId, pageable).getContent();
List<InformationDTO> InformationDTOList = new ArrayList<>();
if(!InformationList.isEmpty())
for (Information information: informationList)
informationDTOList.add(new InformationDTO(information));
return new PageImpl<InformationDTO>(informationDTOList,pageable,informationList.size());
【问题讨论】:
【参考方案1】:要获得一个页面作为答案,您需要在代码中更改一行
// Earlier
List<Information> InformationList = informationRepository.findByClassIdOrderByCreateDateDesc(classId, pageable).getContent();
// Changed line
Page<Information> InformationList = informationRepository.findByClassIdOrderByCreateDateDesc(classId, pageable);
// Then you will not be required to explicitly change into pageable
PageImpl<InformationDTO>(informationDTOList,pageable,informationList.size());
案例 1 查找最大页数
InformationList.getTotalPages()
案例 2 - 您的场景 - 来自集合对象 如果想要分页数据,那么您必须从 PageImpl 类中获得帮助。
提供 2 个构造函数来执行此操作
PageImpl(List<T> content, Pageable pageable, long total)
在哪里
-
content – 此页面的内容(您的收藏对象)。
pageable – 分页信息
total – 可用项目的总量。
还有一个构造函数
PageImpl(List<T> content)
注意 - 这将导致创建的页面与整个列表相同。
【讨论】:
谢谢,它解决了我的问题。但我使用的是 informationList.getTotalElements() 而不是 informationList.size()【参考方案2】:试试这个:-
int totalPages = InformationList.getTotalPages();
【讨论】:
谢谢,但我需要将 tolatpages 设置为不获取 totalPages以上是关于如何在 Spring Boot 中设置 PageImpl 类的 TotalPages的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring Boot 中设置 enableLoggingRequestDetails='true'
如何在 Spring Boot 中设置 UTF-8 字符编码?