天天看點

MyBatis+Mysql 實作分頁(最簡單通用的分頁方式)

1、引入pom.xml 依賴

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

2、增加mybatis-config.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
   <settings>
      <setting name="lazyLoadingEnabled" value="false" />
      <setting name="cacheEnabled" value="false" />
      <setting name="localCacheScope" value="STATEMENT" />
   </settings>
   <plugins>
      <!-- com.github.pagehelper為PageHelper類所在包名 -->
      <plugin interceptor="com.github.pagehelper.PageHelper">
         <property name="dialect" value="mysql"/>
         <!-- 該參數預設為false -->
         <!-- 設定為true時,會将RowBounds第一個參數offset當成pageNum頁碼使用 -->
         <!-- 和startPage中的pageNum效果一樣-->
         <property name="offsetAsPageNum" value="true"/>
         <!-- 該參數預設為false -->
         <!-- 設定為true時,使用RowBounds分頁會進行count查詢 -->
         <property name="rowBoundsWithCount" value="true"/>
         <!-- 設定為true時,如果pageSize=0或者RowBounds.limit = 0就會查詢出全部的結果 -->
         <!-- (相當于沒有執行分頁查詢,但是傳回結果仍然是Page類型)-->
         <property name="pageSizeZero" value="true"/>
         <!-- 3.3.0版本可用 - 分頁參數合理化,預設false禁用 -->
         <!-- 啟用合理化時,如果pageNum<1會查詢第一頁,如果pageNum>pages會查詢最後一頁 -->
         <!-- 禁用合理化時,如果pageNum<1或pageNum>pages會傳回空資料 -->
         <property name="reasonable" value="false"/>
         <!-- 3.5.0版本可用 - 為了支援startPage(Object params)方法 -->
         <!-- 增加了一個`params`參數來配置參數映射,用于從Map或ServletRequest中取值 -->
         <!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用預設值 -->
         <!-- 不了解該含義的前提下,不要随便複制該配置 -->
         <property name="params" value="pageNum=start;pageSize=limit;"/>
         <!-- always總是傳回PageInfo類型,check檢查傳回類型是否為PageInfo,none傳回Page -->
         <property name="returnPageInfo" value="check"/>
      </plugin>
   </plugins>
</configuration>      

3、service層代碼示例:

public PageInfo<Patient> get×××List(Map paramMap,int currentPage, int pageSize) {
    PageHelper.startPage(currentPage,pageSize);
    List<×××> ×××List = ×××Mapper.select×××List(paramMap);
    //用PageInfo對結果進行包裝
  PageInfo<×××> pageInfo = new PageInfo<×××>(×××List);
    return pageInfo;
}      

繼續閱讀