Mybatis的插件 PageHelper 分頁查詢使用方法


Mybatis的一個插件,PageHelper,非常方便mybatis分頁查詢。國內牛人的一個開源項目,有興趣的可以去看源碼,都有中文注釋(ps:某些源碼一大堆英文,痛哭流涕!)

在github上倉庫地址為:Mybatis-PageHelper

它支持基本主流與常用的數據庫,這可以在它的文檔上看到。這里記錄一下使用的基本方法


0.查看文檔與使用准備

開發文檔有中文文檔也有英文文檔


PageHelper官方文檔


============================================



====================================================================================





1.配置攔截器插件


這個是配置在mybatis-config.xml文件中

文檔中的示例:

  1. <!--   
  2.     plugins在配置文件中的位置必須符合要求,否則會報錯,順序如下:  
  3.     properties?, settings?,   
  4.     typeAliases?, typeHandlers?,   
  5.     objectFactory?,objectWrapperFactory?,   
  6.     plugins?,   
  7.     environments?, databaseIdProvider?, mappers?  
  8. -->  
  9. <plugins>  
  10.     <!-- com.github.pagehelper為PageHelper類所在包名 -->  
  11.     <plugin interceptor="com.github.pagehelper.PageInterceptor">  
  12.         <!-- 使用下面的方式配置參數,后面會有所有的參數介紹 -->  
  13.         <property name="param1" value="value1"/>  
  14.     </plugin>  
  15. </plugins>  

我的配置:

  1. <plugins>  
  2.     <plugin interceptor="com.github.pagehelper.PageInterceptor">  
  3.         <!-- config params as the following -->  
  4.         <!--<!–分頁參數合理化  –>-->  
  5.         <property name="reasonable" value="true"/>  
  6.     </plugin>  
  7. </plugins>  

一些配置參數的說明可以參考文檔: 【分頁插件參數介紹】

這里就說明一下reasonable的配置:

reasonable:分頁合理化參數,默認值為false。當該參數設置為 true 時,pageNum<=0 時會查詢第一頁,pageNum>pages(超過總數時),會查詢最后一頁。默認false 時,直接根據參數進行查詢。


那么如何選擇這些配置參數,文檔中也給出了詳細說明:【如何選擇配置這些參數】


2.在代碼中使用

官方文檔也有這部分說明和案例,那么我就以自己的使用案例

  1. @RequestMapping("/emps")  
  2. public String list(@RequestParam(required = false,defaultValue = "1",value = "pageNum")Integer pageNum,  
  3.                    Map<String,Object> map){  
  4.   
  5.     //引入分頁查詢,使用PageHelper分頁功能  
  6.     //在查詢之前傳入當前頁,然后多少記錄  
  7.     PageHelper.startPage(pageNum,5);  
  8.     //startPage后緊跟的這個查詢就是分頁查詢  
  9.     List<Employee> emps = employeeService.getAll();  
  10.     //使用PageInfo包裝查詢結果,只需要將pageInfo交給頁面就可以  
  11.     PageInfo pageInfo = new PageInfo<>(emps,5);  
  12.     //pageINfo封裝了分頁的詳細信息,也可以指定連續顯示的頁數  
  13.   
  14.     map.put("pageInfo",pageInfo);  
  15.     return "list";  
  16. }  
posted @ 2018-04-03 10:39  星朝  閱讀( 12045)  評論( 0編輯  收藏


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM