其他分享
首页 > 其他分享> > pagehelper list数据处理后进行分页

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);
}

标签:total,PageHelper,list,deviceDTO,Page,数据处理,pagehelper,PageInfo,page
来源: https://www.cnblogs.com/jspider/p/16618530.html