分页插件中关于PageInfo

重点1:PageInfo的输出结果

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

private List list;

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

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

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

重点2:具体的使用

            //使用分页插件
            //传入查询的页码,以及显示的条数
            PageHelper.startPage(pn, 10);
            List 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 extend = new HashMap();

    //在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 getExtend() {
        return extend;
    }
    public void setExtend(Map 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}}}

你可能感兴趣的:(框架学习)