http://blog.csdn.net/eson_15/article/details/52270046
1. 需要引入PageHelper的jar包
如果沒有使用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; } |