项目中如果获取到一个集合,在没有使用QueryWrapper方式写出分页
//查询
IPage<HseSpecialEquipment> page = new Page<>();
page.setCurrent(pageIndex);
page.setSize(pageSize);
page = iService.page(page, queryWrapper);
或则是mapper的方式,来查询
IPage<aaDto> aa = aaMapper.getAa(page,aaDto);
如果单纯的就是用集合来自己实现IPage分页,如下:
//current和Size分别如下
//分页
Integer pageIndex = Integer.parseInt(aaDto.getPageIndex());
Integer pageSize = Integer.parseInt(aaDto.getPageSize());
/**
* 列表转分页
* @param list 需要转换的集合
* @param current 当前页数
* @param size 每页数据量
* @param <T> 泛型
* @return
*/
private static <T> IPage<T> listToPage(List<T> list, Long current, Long size){
IPage<T> iPage = new Page<>(current,size);
iPage.setTotal(list.size());
int startIndex = (int)((current - 1)*size);
if(null == list || list.isEmpty() || startIndex > list.size()){
iPage.setRecords(null);
}
else {
int toIndex = (int)(current*size);
iPage.setRecords(list.subList(startIndex,toIndex > list.size() ? list.size() : toIndex));
}
return iPage;
}
这样就实现了Mybatis的IPage分页
若不想写工具类也可以直接实现
前提是获取到的全量数据respDtosByAll 它的集合泛型是respDto,分页的信息在reqDto中
// 分页信息
List<respDto> respDtoByPage = respDtosByAll.subList(((int)reqDto.getCurrent()-1)*(int)reqDto.getSize()<respDtosByAll.size()?((int)reqDto.getCurrent()-1)*(int)reqDto.getSize():0,(int)reqDto.getCurrent()*(int)reqDto.getSize() > respDtosByAll.size()?respDtosByAll.size():(int)reqDto.getCurrent()*(int)reqDto.getSize());
IPage<respDto> page = new Page<>();
page.setRecords(respDtoByPage);
page.setCurrent(reqDto.getCurrent());
page.setSize(reqDto.getSize());
page.setTotal(respDtosByAll.size());
return page;