【转载】分页插件中关于PageInfo

转自:https://blog.csdn.net/ilikejj0/article/details/81110009

1、PageInfo的源代码

private int pageNum;
 private int pageSize;
 private int size;
 //其中最后这个list存放的信息就是使用第三个构造方法,所传进去的List,通常是在数据库中查询到的结果,即是查询出来的book的信息
 //List<Book> bookList = bookService.findBookBybName(bName);
//使用pageInfo包装查询后的结果,封装了详细的查询数据,其中参数5是页码导航连续显示的页数
//PageInfo pageInfo = new PageInfo(bookList,5);

private List<T> list;

//构造方法
public PageInfo() {
    }
public PageInfo(List<T> list) {
        this(list, 8);
    }
public PageInfo(List<T> list, int navigatePages) {
    ·····
    }

//其中的方法
 public List<T> getList() {
        return list;
    }

    public void setList(List<T> list) {
        this.list = list;
    }

补充

  //当前页
    private int pageNum;
    //每页的数量
    private int pageSize;
    //当前页的数量
    private int size;
 
    //由于startRow和endRow不常用,这里说个具体的用法
    //可以在页面中"显示startRow到endRow 共size条数据"
 
    //当前页面第一个元素在数据库中的行号
    private int startRow;
    //当前页面最后一个元素在数据库中的行号
    private int endRow;
    //总记录数
    private long total;
    //总页数
    private int pages;
    //结果集
    private List<T> list;
 
    //前一页
    private int prePage;
    //下一页
    private int nextPage;
 
    //是否为第一页
    private boolean isFirstPage = false;
    //是否为最后一页
    private boolean isLastPage = false;
    //是否有前一页
    private boolean hasPreviousPage = false;
    //是否有下一页
    private boolean hasNextPage = false;
    //导航页码数
    private int navigatePages;
    //所有导航页号
    private int[] navigatepageNums;
    //导航条上的第一页
    private int navigateFirstPage;
    //导航条上的最后一页
    private int navigateLastPage;

2、具体使用

//使用分页插件
//传入查询的页码,以及显示的条数
PageHelper.startPage(pn, 10);
List<Book> bookList = bookService.findBookByCategory(cId);
//使用pageInfo包装查询后的结果,封装了详细的查询数据,其中参数5是页码导航连续显示的页数
PageInfo pageInfo = new PageInfo(bookList,5);
//使用model进行返回
//model.addAttribute("pageInfo", page);
//对于ajax返回json数据,可以使用一个Msg类,方便浏览器更方便解析
return Msg.success().add("pageInfo", pageInfo);

可以直接返回pageInfo,可以得到如下的信息:

{“pageNum”:1,”pageSize”:10,”size”:10,”startRow”:1,”endRow”:10,”total”:64,”pages”:7,”list”:[{“bId”:2,”bName”:”java学习”,”price”:20.0,”author”:”jj”,”cId”:1,”category”:{“cId”:1,”cName”:”学习用书”}},{“bId”:12,”bName”:”dang_9_书1”,”price”:20.1,”author”:”saka1”,”cId”:1,”category”:{“cId”:1,”cName”:”学习用书”}},{“bId”:18,”bName”:”dang_15_书1”,”price”:20.1,”author”:”saka1”,”cId”:1,”category”:{“cId”:1,”cName”:”学习用书”}},{“bId”:21,”bName”:”dang_18_书1”,”price”:20.1,”author”:”saka1”,”cId”:1,”category”:{“cId”:1,”cName”:”学习用书”}},{“bId”:24,”bName”:”dang_21_书1”,”price”:20.1,”author”:”saka1”,”cId”:1,”category”:{“cId”:1,”cName”:”学习用书”}},{“bId”:27,”bName”:”dang_24_书1”,”price”:20.1,”author”:”saka1”,”cId”:1,”category”:{“cId”:1,”cName”:”学习用书”}},{“bId”:30,”bName”:”dang_27_书1”,”price”:20.1,”author”:”saka1”,”cId”:1,”category”:{“cId”:1,”cName”:”学习用书”}},{“bId”:33,”bName”:”dang_30_书1”,”price”:20.1,”author”:”saka1”,”cId”:1,”category”:{“cId”:1,”cName”:”学习用书”}},{“bId”:36,”bName”:”dang_33_书1”,”price”:20.1,”author”:”saka1”,”cId”:1,”category”:{“cId”:1,”cName”:”学习用书”}},{“bId”:39,”bName”:”dang_36_书1”,”price”:20.1,”author”:”saka1”,”cId”:1,”category”:{“cId”:1,”cName”:”学习用书”}}],”prePage”:0,”nextPage”:2,”isFirstPage”:true,”isLastPage”:false,”hasPreviousPage”:false,”hasNextPage”:true,”navigatePages”:5,”navigatepageNums”:[1,2,3,4,5],”navigateFirstPage”:1,”navigateLastPage”:5,”lastPage”:5,”firstPage”:1}

在此可以看出,list中存放的信息时在使用的第三个构造方法所传递的所查询的book的信息

在前端页面进行获取的时候
var emps = result.extend.pageInfo.list;
**这里使用的是.list,因为PageInfo这个类中有private List<T> list这个属性,所以尽管你存的时候写的bookList,在前端获取的时候也是.list,其得到查询结果bookList的全部信息**
通过源码可以看出来,在PageInfo这个类中,包含3个构造方法,
1.无参  
public PageInfo() {
    }
2.一个参数
public PageInfo(List<T> list) {
        this(list, 8);
    }
3.两个参数,这里第一个参数就是传递的List<Employee> emps结果集,内部会进行自动的包装
 public PageInfo(List<T> list, int navigatePages) {....}

3、Msg(这个适合分页插件无关的,主要是对于cotroller返回数据,进行包装,更方便浏览器解析)

public class Msg {
    //表示状态码
    private int code;
    //提示信息
    private String msg;
    //要返回给浏览器的数据
    private Map<String,Object> extend = new HashMap<String,Object>();

    //在controller中调用success方法,返回Msg对象
    public static Msg success(){
        Msg result = new Msg();
        result.setCode(100);
        result.setMsg("处理成功!");
        return result;
    }
    public static Msg fail(){
        Msg result = new Msg();
        result.setCode(200);
        result.setMsg("处理失败");
        return result;
    }

    //把pageInfo中的数据保存到Msg中,一并返回
    public Msg add(String key,Object value){
        this.getExtend().put(key, value);
        return this;
    }


    public int getCode() {
        return code;
    }
    public void setCode(int code) {
        this.code = code;
    }
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    public Map<String, Object> getExtend() {
        return extend;
    }
    public void setExtend(Map<String, Object> extend) {
        this.extend = extend;
    }
}

在Msg中的extend里放了pageInfo的信息,这里extend是Map类型,是因为不需要遍历即可获取信息,而是通过键来获取。

{“code”:100,”msg”:”处理成功!”,”extend”:{“pageInfo”:{“pageNum”:1,”pageSize”:10,”size”:10,”startRow”:1,”endRow”:10,”total”:64,”pages”:7,”list”:[{“bId”:2,”bName”:”java学习”,”price”:20.0,”author”:”jj”,”cId”:1,”category”:{“cId”:1,”cName”:”学习用书”}},{“bId”:12,”bName”:”dang_9_书1”,”price”:20.1,”author”:”saka1”,”cId”:1,”category”:{“cId”:1,”cName”:”学习用书”}},{“bId”:18,”bName”:”dang_15_书1”,”price”:20.1,”author”:”saka1”,”cId”:1,”category”:{“cId”:1,”cName”:”学习用书”}},{“bId”:21,”bName”:”dang_18_书1”,”price”:20.1,”author”:”saka1”,”cId”:1,”category”:{“cId”:1,”cName”:”学习用书”}},{“bId”:24,”bName”:”dang_21_书1”,”price”:20.1,”author”:”saka1”,”cId”:1,”category”:{“cId”:1,”cName”:”学习用书”}},{“bId”:27,”bName”:”dang_24_书1”,”price”:20.1,”author”:”saka1”,”cId”:1,”category”:{“cId”:1,”cName”:”学习用书”}},{“bId”:30,”bName”:”dang_27_书1”,”price”:20.1,”author”:”saka1”,”cId”:1,”category”:{“cId”:1,”cName”:”学习用书”}},{“bId”:33,”bName”:”dang_30_书1”,”price”:20.1,”author”:”saka1”,”cId”:1,”category”:{“cId”:1,”cName”:”学习用书”}},{“bId”:36,”bName”:”dang_33_书1”,”price”:20.1,”author”:”saka1”,”cId”:1,”category”:{“cId”:1,”cName”:”学习用书”}},{“bId”:39,”bName”:”dang_36_书1”,”price”:20.1,”author”:”saka1”,”cId”:1,”category”:{“cId”:1,”cName”:”学习用书”}}],”prePage”:0,”nextPage”:2,”isFirstPage”:true,”isLastPage”:false,”hasPreviousPage”:false,”hasNextPage”:true,”navigatePages”:5,”navigatepageNums”:[1,2,3,4,5],”navigateFirstPage”:1,”navigateLastPage”:5,”lastPage”:5,”firstPage”:1}}}

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值