Maven+Spring + Mybatis 使用 PageHelper 插件分頁

一、增加maven依賴:

<!-- pagehelper -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>4.1.6</version>
        </dependency>
        <dependency>
            <groupId>com.github.jsqlparser</groupId>
            <artifactId>jsqlparser</artifactId>
            <version>0.9.6</version>
        </dependency>

二、修改mybatis配置文件:mybatis-config.xml的plugin內容:

<?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="cacheEnabled" value="true"/>

        <!-- 全局啓用或禁用延遲加載。當禁用時,所有關聯對象都會即時加載。 -->
        <setting name="lazyLoadingEnabled" value="true"/>

        <!-- 當啓用時,有延遲加載屬性的對象在被調用時將會完全加載任意屬性。否則,每種屬性將會按需要加載。 -->
        <setting name="aggressiveLazyLoading" value="true"/>

        <!-- 是否允許單條sql 返回多個數據集  (取決於驅動的兼容性) default:true -->
        <setting name="multipleResultSetsEnabled" value="true"/>

        <!-- 是否可以使用列的別名 (取決於驅動的兼容性) default:true -->
        <setting name="useColumnLabel" value="true"/>

        <!-- 允許JDBC 生成主鍵。需要驅動器支持。如果設爲了true,這個設置將強制使用被生成的主鍵,有一些驅動器不兼容不過仍然可以執行。  default:false  -->
        <setting name="useGeneratedKeys" value="false"/>

        <!-- 指定 MyBatis 如何自動映射 數據基表的列 NONE:不隱射 PARTIAL:部分  FULL:全部  -->  
        <setting name="autoMappingBehavior" value="PARTIAL"/>

        <!-- 這是默認的執行類型  (SIMPLE: 簡單; REUSE: 執行器可能重複使用prepared statements語句;BATCH: 執行器可以重複執行語句和批量更新)  -->
        <setting name="defaultExecutorType" value="SIMPLE"/>

        <!-- 使用駝峯命名法轉換字段。 -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>

        <!-- 設置本地緩存範圍 session:就會有數據的共享  statement:語句範圍 (這樣就不會有數據的共享 ) defalut:session -->
        <setting name="localCacheScope" value="SESSION"/>

        <!-- 設置但JDBC類型爲空時,某些驅動程序 要指定值,default:OTHER,插入空值時不需要指定類型 -->
        <setting name="jdbcTypeForNull" value="NULL"/>

    </settings>

    <!-- 插件配置 -->
    <plugins>  
        <!-- com.github.pagehelper爲PageHelper類所在包名 -->  
        <plugin interceptor="com.github.pagehelper.PageHelper">  
            <!-- 4.0.0以後版本可以不設置該參數 -->  
            <!-- <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="true"/>  
            <!-- 3.5.0版本可用 - 爲了支持startPage(Object params)方法 -->  
            <!-- 增加了一個`params`參數來配置參數映射,用於從Map或ServletRequest中取值 -->  
            <!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,orderBy,不配置映射的用默認值 -->  
            <!-- 不理解該含義的前提下,不要隨便複製該配置 -->  
            <property name="params" value="pageNum=start;pageSize=limit;"/>  
            <!-- 支持通過Mapper接口參數來傳遞分頁參數 -->  
            <property name="supportMethodsArguments" value="true"/>  
            <!-- always總是返回PageInfo類型,check檢查返回類型是否爲PageInfo,none返回Page -->  
            <property name="returnPageInfo" value="check"/>  
        </plugin>  
    </plugins>  

</configuration>

測試代碼

@RequestMapping("listUser")
     public String getUser(User user, Model model, @RequestParam(required=true,defaultValue="1") Integer start,
                @RequestParam(required=false,defaultValue="10") Integer pageSize) {

         PageHelper.startPage(start, pageSize);

         List<User> list  = this.userService.listUser();
         PageInfo<User> page = new PageInfo<User>(list);
         model.addAttribute("userList", list);
         model.addAttribute("page", page);
         return "models/sys/usersList";
     }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章