1. 程式人生 > >SSM 框架下 使用 EasyUI 整合 PageHelper 實現分頁

SSM 框架下 使用 EasyUI 整合 PageHelper 實現分頁

準備條件

1  .引入pageHelper 依賴包

<!-- 分頁外掛 -->
            <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>4.0.0</version>
        </dependency>


      
  

2.mybatis 主配置檔案中加入如下:
<?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">
<!-- mybatis 的主配置檔案 -->
<configuration>
   <!--  <typeAliases>
        <typeAlias type="User" alias="user"/>
        
    </typeAliases>  -->
    
    <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;"/> -->
        </plugin>
    </plugins>
    
</configuration>


3.spring 整合mybatis (載入mybatis 主配置檔案)
<!-- Spring整合MyBatis框架 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="configLocation" value="classpath:/mybatis/mybatis-config.xml"></property>
        <property name="dataSource" ref="dataSource"></property>
        <property name="mapperLocations">
            <list>    
                <!-- classpath* 表示從依賴的專案打的jar包中進行掃描,載入配置,不加*表示從當前專案類路徑進行載入配置檔案。 -->
                <value>classpath*:/mybatis/mapper-*.xml</value>
            </list>
        </property>
        <property name="typeAliasesPackage" value="com.atguigu.collect.bean"></property>
    </bean>


        

4.Controller 層實現方法
例項方法
//多條件查詢的方法
    @RequestMapping("getEmpInfoList")
    @ResponseBody
    public HashMap<String, Object> searchConditionsEmp(
            String status,String orgId,
            String id,String loginName,
            @RequestParam("page") Integer pageNum,
            @RequestParam("rows") Integer rows
){
        
        //防止 引數值為 空字串 "" mybatis 中無法識別的囧境遇
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("status", "".equals(status)?null:status);
        map.put("orgId", "".equals(orgId)?null:orgId);
        map.put("id", "".equals(id)?null:id);
        map.put("loginName", "".equals(loginName)?null:loginName);
        //分頁所需的資料
        map.put("rows", rows);
        map.put("pageNum", pageNum);
            

        //將 當前頁碼   每頁顯示條數 放入 到pageHelper 中
        PageHelper.startPage(pageNum, rows);
        
        //查詢所記錄的方法(此句 在mybaits 查詢語句中不要在加入 limt pageHelper 會自動注入)
        List<EmployeeInfo> empInfoList = employeeInfoService.getEmpInfoList(map);
        
        //呼叫需要分頁處理的 執行方法(會在SQL 語句中自動加入 limit )
        PageInfo pageInfo = new PageInfo(empInfoList);
        
        //獲取總記錄數
        long total = pageInfo.getTotal(); 
        

        //封裝獲取到的分頁資料 封裝成分頁外掛所需要的格式
        HashMap<String, Object> jsonMap = new HashMap<String, Object>();
        jsonMap.put("total", total);
        jsonMap.put("rows", empInfoList);

        
        
        return jsonMap;
        
    }

5.前端easyui整合  分頁  
<!-- 列表部分 -->
    <div id="tables">
        <table id ="empInfodg" class="easyui-datagrid" style="width:100%;height:250px" 
                pagination='true' rownumbers='true'(加入兩個屬性 datagrid 會自動加入分頁外掛)
            data-options="url:'getEmpInfoList.do',fitColumns:true,singleSelect:true">   
            <thead>   
                <tr>   
                    <th data-options="field:'ck',checkbox:true"></th>
                    <th data-options="field:'status'">員工狀態</th>
                    <th data-options="field:'id' ,width:60">賬號</th>
                    <th data-options="field:'loginName',width:60">姓名</th>   
                    <th data-options="field:'sex',width:60,align:'right'">性別</th>
                    <th data-options="field:'joinTime',width:60">入職時間</th>   
                    <th data-options="field:'positionId',width:60">崗位</th>   
                    <th data-options="field:'orgId',width:60,align:'right'">機構</th>
                    <th data-options="field:'createTime',width:60">錄入時間</th>   
                    <th data-options="field:'modifyTime',width:60">修改時間</th>   
                </tr>   
            </thead>   
        </table>
    </div>