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、我估計會遇到,有條件的查詢獲取總數會有問題……後面再試試