pagehelper list数据处理后进行分页

问题背景:PageHelper的分页只有在PageHelper.startPage(pageNum,pageSize)之后的数据库查询语句才起作用,原因是PageHelper的实现原理是在数据库查询过程中通过拦截器拦截处理。在我当前的项目中,需要对本地已经处理好的ArrayList进行分页。

方法有两种:

第一种

重新自定义PageInfo类,能解决问题,但是比较繁琐,不探究。

第二种(推荐)

直接用PageHelper的类来实现,代码如下:

/**
 * 分页查询
 */
public PageInfo<DeviceVO> queryDeviceVOPage(DeviceDTO deviceDTO) {
    List<DeviceVO> list = this.queryDeviceVOList(deviceDTO);
    //创建Page类
    Page<DeviceVO> page = new Page<DeviceVO>(deviceDTO.getNum(), deviceDTO.getSize());
    //为Page类中的total属性赋值
    int total = list.size();
    page.setTotal(total);
    //计算当前需要显示的数据下标起始值
    int startIndex = (deviceDTO.getNum() - 1) * deviceDTO.getSize();
    int endIndex = Math.min(startIndex + deviceDTO.getSize(), total);
    //从链表中截取需要显示的子链表,并加入到Page
    page.addAll(list.subList(startIndex, endIndex));
    //以Page创建PageInfo,并返回PageInfo
    return new PageInfo<>(page);
}
posted @ 2022-08-24 08:28  南翔技校毕业后  阅读(674)  评论(0)    收藏  举报