在一个项目中看到PageHelper分页插件这样的用法
productList 返回的是一个 Page 对象,Page 对象的声明:
Page
可见 Page 继承自 ArrayList,所以 Page 对象是一个 List。
ArrayList
List
再来看看 PageInfo 的构造函数的源码:
PageInfo
public PageInfo(List<T> list) { this(list, 8); } public PageInfo(List<T> list, int navigatePages) { if (list instanceof Page) { Page page = (Page) list; this.pageNum = page.getPageNum(); this.pageSize = page.getPageSize(); this.pages = page.getPages(); this.list = page; this.size = page.size(); this.total = page.getTotal(); if (this.size == 0) { this.startRow = 0; this.endRow = 0; } else { this.startRow = page.getStartRow() + 1; this.endRow = this.startRow - 1 + this.size; } } else if (list instanceof Collection) { this.pageNum = 1; this.pageSize = list.size(); this.pages = this.pageSize > 0 ? 1 : 0; this.list = list; this.size = list.size(); this.total = list.size(); this.startRow = 0; this.endRow = list.size() > 0 ? list.size() - 1 : 0; } ... }
关注第一个 if (list instanceof Page),可见如果当传入的 List 对象是一个 Page 的时候,可以直接通过这个 Page 对象来获得相关的分页信息。所以,这段代码,作者的意思应该是先通过 productList 这个 Page 对象来设置 PageInfo 的分页信息,然后再通过 setList 方法来改变具体的数据,从而 使得 PageInfo 中既有原来的分页信息,然后数据又是 VO 对象。
if (list instanceof Page)
setList
VO
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(2)
productList 返回的是一个
Page
对象,Page
对象的声明:可见
Page
继承自ArrayList
,所以Page
对象是一个List
。再来看看
PageInfo
的构造函数的源码:关注第一个
if (list instanceof Page)
,可见如果当传入的List
对象是一个Page
的时候,可以直接通过这个 Page 对象来获得相关的分页信息。所以,这段代码,作者的意思应该是先通过 productList 这个 Page 对象来设置PageInfo
的分页信息,然后再通过setList
方法来改变具体的数据,从而 使得PageInfo
中既有原来的分页信息,然后数据又是VO
对象。