在日常开发中,我们可能会遇到数据集是由一次或多次查询的数据集合并而来,而非单次查询,此时直接使用startPage()
可能会发生分页失效等情况,此时我们可以采用手动分页来处理。
// 示例数据
List<Assets> result = new ArrayList<>();
List<Assets> assets1 = Optional.ofNullable(assetsMapper.select(....)).orElse(new ArrayList<>());
result.addAll(assets1);
List<Assets> assets2 = Optional.ofNullable(assetsMapper.select(....)).orElse(new ArrayList<>());
result.addAll(assets2);
List<Assets> assets3 = Optional.ofNullable(assetsMapper.select(....)).orElse(new ArrayList<>());
result.addAll(assets3);
// 封装返回
PageDomain pageDomain = TableSupport.buildPageRequest();
Integer pageNum = pageDomain.getPageNum();
Integer pageSize = pageDomain.getPageSize();
int num = result.size();
result = result.stream().skip((pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
TableDataInfo tableDataInfo = new TableDataInfo();
tableDataInfo.setCode(HttpStatus.SUCCESS);
tableDataInfo.setMsg("查询成功");
tableDataInfo.setRows(result);
tableDataInfo.setTotal(num);
return tableDataInfo;