package com.tszr.mango.core.page; import java.util.List; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.tszr.mango.common.utils.ReflectionUtils; public class MybatisPageHelper { public static final String findPage = "findPage"; /** * 分页查询, 约定查询方法名为 “findPage” * * @param pageRequest 分页请求 * @param mapper Dao对象,MyBatis的 Mapper * @param args 方法参数 * @return */ public static PageResult findPage(PageRequest pageRequest, Object mapper) { return findPage(pageRequest, mapper, findPage); } /** * 调用分页插件进行分页查询 * * @param pageRequest 分页请求 * @param mapper Dao对象,MyBatis的 Mapper * @param queryMethodName 要分页的查询方法名 * @param args 方法参数 * @return */ @SuppressWarnings({ "unchecked", "rawtypes" }) public static PageResult findPage(PageRequest pageRequest, Object mapper, String queryMethodName, Object... args) { // 设置分页参数 int pageNum = pageRequest.getPageNum(); int pageSize = pageRequest.getPageSize(); PageHelper.startPage(pageNum, pageSize); // 利用反射调用查询方法 Object result = ReflectionUtils.invoke(mapper, queryMethodName, args); return getPageResult(pageRequest, new PageInfo((List) result)); } /** * 将分页信息封装到统一的接口 * * @param pageRequest * @param page * @return */ private static PageResult getPageResult(PageRequest pageRequest, PageInfo<?> pageInfo) { PageResult pageResult = new PageResult(); pageResult.setPageNum(pageInfo.getPageNum()); pageResult.setPageSize(pageInfo.getPageSize()); pageResult.setTotalSize(pageInfo.getTotal()); pageResult.setTotalPages(pageInfo.getPages()); pageResult.setContent(pageInfo.getList()); return pageResult; } }
package com.tszr.mango.core.page; import java.util.HashMap; import java.util.Map; public class PageRequest { /** * 当前页码 */ private int pageNum = 1; /** * 每页数量 */ private int pageSize = 10; /** * 查询参数 */ private Map<String, Object> params = new HashMap<>(); public int getPageNum() { return pageNum; } public void setPageNum(int pageNum) { this.pageNum = pageNum; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public Map<String, Object> getParams() { return params; } public void setParams(Map<String, Object> params) { this.params = params; } public Object getParam(String key) { return getParams().get(key); } }
package com.tszr.mango.core.page; import java.util.List; public class PageResult { /** * 当前页码 */ private int pageNum; /** * 每页数量 */ private int pageSize; /** * 记录总数 */ private long totalSize; /** * 页码总数 */ private int totalPages; /** * 分页数据 */ private List<?> content; public int getPageNum() { return pageNum; } public void setPageNum(int pageNum) { this.pageNum = pageNum; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public long getTotalSize() { return totalSize; } public void setTotalSize(long totalSize) { this.totalSize = totalSize; } public int getTotalPages() { return totalPages; } public void setTotalPages(int totalPages) { this.totalPages = totalPages; } public List<?> getContent() { return content; } public void setContent(List<?> content) { this.content = content; } }