分頁插件PageHelper


http://blog.csdn.net/eson_15/article/details/52270046

1.  需要引入PageHelperjar

如果沒有使用maven,那直接把jar包導入到lib文件夾下即可,這個PageHelper插件在github上有開源,地址為:https://github.com/pagehelper/Mybatis-PageHelper/tree/master/src/main/java/com/github/pagehelper。 
如果使用了maven,那么只要在pom.xml中引入該插件即可,引入如下:

<dependency>

    <groupId>com.github.pagehelper</groupId>

    <artifactId>pagehelper</artifactId>

    <version>4.1.4</version>

</dependency>

2. mybatis的全局配置文件SqlMapConfig.xml中配置該插件

<configuration>

 

   <settings>

      <setting name="logImpl" value="STDOUT_LOGGING" />

   </settings>

   <plugins>

      <!-- 配置分頁助手 -->

      <plugin interceptor="com.github.pagehelper.PageHelper">

        <property name="dialect" value="mysql" />

        <!-- 該參數默認為false -->

        <!-- 設置為true時,使用RowBounds分頁會進行count查詢 -->

        <property name="rowBoundsWithCount" value="true" />

      </plugin>

     

   </plugins>

</configuration>

 

3定義需要用到的實體,里面包括頁數,數據總數等等

package com.edu.mooc.common.bean;

 

import java.util.List;

 

import com.fasterxml.jackson.databind.JsonNode;

import com.fasterxml.jackson.databind.ObjectMapper;

 

public class PageInfoResult {

 

   // 定義jackson對象

   private static final ObjectMapper MAPPER = new ObjectMapper();

 

   private Integer total;// 總記錄數

 

   private List<?> rows;// 分頁查詢集合數

 

   private int page;// 頁碼

 

   public static int page_rows = 10;// 每頁條數

 

   public PageInfoResult() {

   }

 

   public PageInfoResult(Integer total, List<?> rows) {

      this.total = total;

      this.rows = rows;

   }

 

   public PageInfoResult(Long total, List<?> rows) {

      this.total = total.intValue();

      this.rows = rows;

   }

 

 

   public Integer getTotal() {

      return total;

   }

 

   public void setTotal(Integer total) {

      this.total = total;

   }

 

   public List<?> getRows() {

      return rows;

   }

 

   public void setRows(List<?> rows) {

      this.rows = rows;

   }

 

   public int getPage() {

      return page;

   }

 

   public void setPage(int page) {

      this.page = page;

   }

 

   public int getPage_rows() {

      return page_rows;

   }

 

   /*

    * 計算頁碼總數

    */

   public int total_page() {

      // 判斷頁碼是否能和每頁條數整除,能—>商為總頁碼,否->商+1為總頁碼

      return total % page_rows == 0 ? total / page_rows : total / page_rows + 1;

   }

 

   /**

    * Object是集合轉化

    *

    * @param jsonData

    *            json數據

    * @param clazz

    *            集合中的類型

    * @return

    */

   public static PageInfoResult formatToList(String jsonData, Class<?> clazz) {

      try {

        JsonNode jsonNode = MAPPER.readTree(jsonData);

        JsonNode data = jsonNode.get("rows");

        List<?> list = null;

        if (data.isArray() && data.size() > 0) {

           list = MAPPER.readValue(data.traverse(),

                 MAPPER.getTypeFactory().constructCollectionType(List.class, clazz));

        }

        return new PageInfoResult(jsonNode.get("total").intValue(), list);

      } catch (Exception e) {

        return null;

      }

   }

 

}

 

4. 分頁插件進行分頁處理

   public PageInfoResult queryAdminList(PageInfoResult infoResult){

      //判斷該頁面是否為第一頁。是第一頁。手動賦頁碼

           if(infoResult.getPage()==0){

              infoResult.setPage(1);

           }

           //使用分頁插件進行分頁

           PageHelper.startPage(infoResult.getPage(), infoResult.getPage_rows());

           List<SysUser> admin_list = adminLoginMapper.queryAdminList();

      //對Page結果進行包裝   

PageInfo<SysUser> pageInfo=new PageInfo<>(admin_list);

           PageInfoResult result=new PageInfoResult(pageInfo.getTotal(), admin_list);

           result.setPage(infoResult.getPage());

          

           return result;

   }


免責聲明!

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



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