天天看點

mybatis分頁查詢

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.使用方法

  1. 在業務層調用查詢方法時設定分頁相關操作:
/**
            * 分頁查詢
            * @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插件到配置中即可)

詳細使用,參考位址

繼續閱讀