在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  HTML/ MyBatis分頁插件PageHelper的用法的一個小疑問

MyBatis分頁插件PageHelper的用法的一個小疑問

在一個項目中看到PageHelper分頁插件這樣的用法

圖片描述

回答
編輯回答
背叛者

productList 返回的是一個 Page 對象,Page 對象的聲明:
Page 對象的聲明

可見 Page 繼承自 ArrayList,所以 Page 對象是一個 List。


再來看看 PageInfo 的構(gòu)造函數(shù)的源碼:

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

關(guān)注第一個 if (list instanceof Page),可見如果當傳入的 List 對象是一個 Page 的時候,可以直接通過這個 Page 對象來獲得相關(guān)的分頁信息。所以,這段代碼,作者的意思應(yīng)該是先通過 productList 這個 Page 對象來設(shè)置 PageInfo 的分頁信息,然后再通過 setList 方法來改變具體的數(shù)據(jù),從而 使得 PageInfo 中既有原來的分頁信息,然后數(shù)據(jù)又是 VO 對象

2017年11月8日 17:08
編輯回答
伴謊

圖片描述

2017年5月24日 17:30