1. 程式人生 > >PageHelper分頁外掛和easyUI實現分頁

PageHelper分頁外掛和easyUI實現分頁

場景需求:舊版mybatis分頁的,要單獨寫一個獲取總數的方法和查詢一模一樣(早就看它不順眼),索性升級一下

。過程中也碰到了不少死衚衕(想把自己打死)

。但是使用很簡單……真的很簡單,請看這哥子的文章

說明:舊版是SpringMVC和mybatis,只是在基礎上加了PageHelper

開始,廢話不多說

1、引入jar

(申明:版本跟mybatis版本有關,在maven repository看下面依賴說明,找到自己合適的包)

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>4.1.6</version>
</dependency>

2、在mybatis-config.xml中配置分頁外掛

<!-- 配置分頁外掛 -->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageHelper">
            <!-- 設定資料庫型別 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六種資料庫-->
            <property name="dialect" value="mysql"/>
        </plugin>
    </plugins>

3、好的,開始操練:

3.1、舊程式碼如下(資料結果和總數,需要查詢兩次):

@Override
public void findBrandDataGrid(PageInfo pageInfo) {
    pageInfo.setRows(brandMapper.findBrandDataGrid(pageInfo));
    pageInfo.setTotal(brandMapper.findBrandCount(pageInfo));
}

3.2、改進使用pageHelper(切記,去掉mapper xml中sql查詢的分頁引數,原因:pagehelper會自動拼接limit分頁引數)

public void findBrandDataGrid(PageInfo pageInfo) {
        Page<List> page = PageHelper.startPage(pageInfo.getNowpage(), pageInfo.getSize());
        List result = brandMapper.findBrandDataGrid(pageInfo);
        pageInfo.setTotal((int) page.getTotal());
        pageInfo.setRows(result);
    }

除錯看看sql,如圖

4、致命問題,說明:

1、由於easyui需要,原本系統封裝了一個PageInfo(瑪德,這個和PageHelper這個PageInfo命名一模一樣,所以被掛死在這裡大半天<希望大夥不要像我一樣傻逼,被這兩個PageInfo搞團團轉,他們是兩個毫不相干的東西,雖然裡面內容有點相似>)

easyui特定資料格式:{total:"100",rows:[{"id":"1" , "name":"aaa"},{"id":"2" , "name":"bbb"}]}

所以還是將通過PageHelper查詢的結果和總數,放入舊的結果集中:

        pageInfoSelf.setTotal((int) page.getTotal());
        pageInfoSelf.setRows(result);

2、第二個蛋疼問題是,pagehelper只查詢總數,不查詢結果集(感謝文章

原因是PageHelper.startPage(start, limit);——————start從1開始

3、我估計會遇到,有條件的查詢獲取總數會有問題……後面再試試