<!-- 分頁插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-autoconfigure</artifactId>
<version>1.2.5</version>
</dependency>
pagehelper: #pagehelper分頁插件
auto-runtime-dialect: true
support-methods-arguments: true
reasonable: true
params: count=countSql
public PageInfo<GoodsInfoDto> selectByPageInfo(Integer pageNum, Integer pageSize) throws Exception {
if (pageNum == null || pageSize == null) {
throw new BindException("參數錯誤!");
}
PageHelper.startPage(pageNum, pageSize);
List<GoodsInfo> goodsInfos = goodsInfoMapper.selectAll();
List<GoodsInfoDto> dtos = goodsInfos.stream().map(goodsInfo -> new GoodsInfoDto().convertGoodsInfo(goodsInfo)).collect(Collectors.toList());
PageInfo<GoodsInfoDto> pageInfo = new PageInfo<>(dtos);
return pageInfo;
錯誤原因: 在service中,使用dao獲取到數據後因爲的把數據轉成dto之後然後傳入的PageInfo對象中的,所以出現了問題。
如果直接把dao獲取到的數據直接傳遞給PageInfo對象中就不會出現該問題。
修改之後的代碼:
public PageInfo<GoodsInfoDto> selectByPageInfo(Integer pageNum, Integer pageSize) throws Exception {
if (info.getPageNum() == null || info.getPageSize() == null) {
throw new BindException("參數錯誤!");
}
PageHelper.startPage(info.getPageNum(), info.getPageSize());
List<GoodsInfo> goodsInfos = goodsInfoMapper.selectAll();
// 如果在獲取到數據之後就對數據進行轉dto操作的話,會獲取不到total數據,所以又定義了一個PageInfo類然後將數據進行屬性複製,來獲取數據
PageInfo<GoodsInfoDto> pageInfo1 = new PageInfo<>();
BeanUtils.copyProperties(new PageInfo<>(goodsInfos), pageInfo1);
pageInfo1.setList(goodsInfos.stream().map(goodsInfo -> new GoodsInfoDto().convertGoodsInfo(goodsInfo)).collect(Collectors.toList()));
return pageInfo1;
}