PageHelPer是什么?
基于Mybatis框架实现的一个分页插件
PageHelper应用原理?
PageHelper底层基于Mybatis框架中的拦截器规范,做了一个分页拦截器的具体实现,假如我们调用的PageHelper.startPage()方法,底层会在Mybatis层面启动一拦截器,在拦截器中,对SQL查询进行拦截,查询到以后对SQL进一步处理。
PageHelper在SpringBoot工程中的应用。
第一步: 添加依赖
<!--PageHelper依赖-->
<!--
此依赖中的api封装了mybatis中分页查询操作
其原理:
当我们执行sql查询时,假如我们调用了PageHelper.startPage()方法
底层会在mybatis层面启动拦截器,在拦截器中对sql查询进行拦截,
拦截到sql以后,对sql进行处理
-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.10</version>
</dependency>
第二步: 创建工具类获取request对象
package com.cy.pj.sys.common.util;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
/**
* 1.获取request对象
*/
public class ServletUtil {
/**
* 获取request请求
*/
public static HttpServletRequest getRequest(){
return getServletAttributes().getRequest();
}
/**
* 通过RequestContextHolder类型获取请求属性
*/
public static ServletRequestAttributes getServletAttributes(){
return (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
}
}
第三步: 创建StringUtil工具类对字符串是否为空进行判断
package com.cy.pj.sys.common.util;
public class StringUtil {
public static boolean isEmpty(String str){
return str==null||"".equals(str);
}
}
第四步: 获取request中的数据,进行分页操作
package com.cy.pj.sys.common.util;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.util.StringUtil;
import javax.servlet.http.HttpServletRequest;
/**
*2.获取request中的数据,进行分页操作
*/
public class PageUtil {
public static <T>Page<T> startPage(){
HttpServletRequest request = com.cy.pj.sys.common.util.ServletUtil.getRequest();
//页面大小(每页最多显示多少条记录)
String pageSizeStr= request.getParameter("pageSize");
//当前页码值(要查第几页的数据)
String pageCurrentStr= request.getParameter("pageCurrent");
System.out.println("(记录数)pageSize="+pageSizeStr);
System.out.println("(页数)pageCurrent="+pageCurrentStr);
//在此位置调用PageHelper中的一个方法启动分页
//在项目中去添加一个PageHelper依赖(后缀是starter的)
Integer pageCurrent=//如果判断成立,默认是1 如果不成立,会将url中的数据从字符串转换成数字
StringUtil.isEmpty(pageCurrentStr)?1:Integer.parseInt(pageCurrentStr);
Integer pageSize=
StringUtil.isEmpty(pageSizeStr)?10:Integer.parseInt(pageSizeStr);
//启动PageHelper中的分页拦截器(PageInterceptor)
return PageHelper.startPage(pageCurrent,pageSize);
}
}