mybaits中分頁查詢
Mybatis内置了RowBounds分頁元件,通過在查詢時傳入RowBounds對象即可完成分頁功能,但是RowBounds預設是邏輯分頁,是以在進行大量資料查詢時,效率較低,是以需要使用實體分頁提高查詢效率;另一種分頁方式即使用第三方的分頁插件PageHelper
RowBounds分頁
RowBounds分頁的使用方式包含兩種方式:
1.直接調用SqlSession對象提供的selectList方法實作:
2.在Mapper接口中定義查詢方法時,聲明RowBounds作為查詢參數:
/**
* 分頁查詢
* RowBounds提供了一個包含兩個參數的構造器
* 參數1:offset 查詢起始位
* 參數2:limit 查詢的資料行數
* @param rb 需要包含了頁碼資訊的RowBounds對象
* @return
*/
List<Student> selectAll(RowBounds rb);
對于以上第二種方式,隻需要在業務層調用方法時傳入RowBounds對象即可:
/**
* 分頁查詢
* RowBounds提供了一個包含兩個參數的構造器
* 參數1:offset 查詢起始位
* 參數2:limit 查詢的資料行數
* @param rb 需要包含了頁碼資訊的RowBounds對象
* @return
*/
List<Student> selectAll(RowBounds rb);
注意事項:
因為RowBounds内部是基于記憶體的分頁,實際是在資料庫将将資料全部查詢出來,然後通過List集合的subList方法實作截取,是以在進行大量資料查詢時會消耗較大的記憶體進而影響性能。
PageHelper分頁插件
1.首先需要下載下傳插件
下載下傳網站
2.jar導入Moudle
Ctrl+shift+alt+s 打開 project Structure
在Modules中選中目前項目,選擇Dependencies将下載下傳的兩個jar包導入進去
- jsqlparser.jar
- pageHelper.jar
3.配置檔案
在核心配置檔案中添加
<!-- 添加分頁插件-->
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>
4.使用方法
- 在業務層調用查詢方法時設定分頁相關操作:
/**
* 分頁查詢
* @param pageNow 目前頁
* @param pageSize 每頁記錄條數
*/
public PageInfo<Student> queryByPage(int pageNow,int pageSize){
SqlSession session = MybatisUtils.getSession();
StudentMapper mapper = session.getMapper(StudentMapper.class);
//設定分頁 第三個參數為排序字段
PageHelper.startPage(pageNow,pageSize,"age");
//無需排序的使用
//PageHelper.startPage(pageNow,pageSize);
//執行查詢
List<Student> list = mapper.selectAll2();
for (Student s:list) {
System.out.println(s);
}
//根據集合建構PageInfo對象(包含分頁的一切資訊)
PageInfo<Student> page = new PageInfo<>(list);
return page;
}
注意事項
PageHelper對RowBounds分頁也提供了完美的支援,對于RowBounds分頁,可以無需做任何修改,PageHelper會自動将邏輯分頁轉換為實體分頁實作(即不用修改方法一種的任何代碼,隻需添加PageHelper插件到配置中即可)
詳細使用,參考位址