下载jar包
本文以5.1.9 版本为例,讲解使用
参见官网:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md
下载pagehelper.jar
https://repo1.maven.org/maven2/com/github/pagehelper/pagehelper/
下载jar包
下载jsqlparser.jar
pagehelper 使用 jsqlparser 解析sql语句,所以需要 jsqlparser.jar 包,而且必须版本对应,否则报错
点击上图中的pagehelper-5.1.9.pom查看依赖版本,如下:
下载 jsqlparser.jar 2.0版本
链接:https://search.maven.org/artifact/com.github.jsqlparser/jsqlparser/2.0/bundle
配置
根据官网介绍,有2种方式:
- 配置在
spring.xml中 - 配置在
mybatis.xml中
这里只介绍mybatis.xml配置方法
<plugins>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- 使用下面的方式配置参数,后面会有所有的参数介绍 -->
<!-- <property name="helperDialect" value="mysql"/> -->
</plugin>
</plugins>
使用
mapper.xml
与普通查询sql相同,不需要增加额外内容
<select id="mgrQueryList" resultMap="GoodsRM" >
select id,img,name,descrip,price from goods
<where>
<if test='name!=null and name!=""'>
and name like "%"#{name}"%"
</if>
</where>
order by update_time desc,name,id
</select>
mapper接口
不需要改动,与普通接口相同
public List mgrQueryList(@Param("name")String name);
json封装类
JsonResult:
@JsonInclude(JsonInclude.Include.NON_NULL)
public class JsonResult<T> {
/*
0:成功,正确
非0表示错误
100:用户名、密码不正确
101:密码错误
102:用户名不存在
*/
private int code;
/*
提示信息
*/
private String msg;
private T data;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
JsonResultPage
需要增加 JsonResultPage,用于封装分页信息
public class JsonResultPage<T> extends JsonResult<T>{
private Integer pageNum;
private Integer pageSize;
private Integer pages;
private Long total;
public Integer getPageNum() {
return pageNum;
}
public void setPageNum(Integer pageNum) {
this.pageNum = pageNum;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public Integer getPages() {
return pages;
}
public void setPages(Integer pages) {
this.pages = pages;
}
public Long getTotal() {
return total;
}
public void setTotal(Long total) {
this.total = total;
}
}
service
详见:pagehelper 分页实现-PageHelper.startPage方式
有小改动,包含非常全面的分页属性
public PageInfo<Goods> mgrQueryList(String name,String startDate,String endDate,Integer status,int pageNum,int pageSize) throws Exception{
PageHelper.startPage(pageNum, pageSize, true);
//写在PageHelper.startPage下面,才会分页
List list=dao.mgrQueryList(name, startDate, endDate,status);
//用PageInfo对结果进行包装,PageInfo包含非常全面的分页属性
PageInfo<Goods> pageInfo=new PageInfo<Goods>(list);
return pageInfo;
}
controller
有小改动
@RequestMapping("/list")
public JsonResult list(String name,String pageNum,String pageSize){
JsonResultPage jr=new JsonResultPage();
int pageNumInt=0;
int pageSizeInt=10;
if(pageNum!=null && !"".equals(pageNum)) {
pageNumInt=Integer.parseInt(pageNum);
}
if(pageSize!=null && !"".equals(pageSize)) {
pageSizeInt=Integer.parseInt(pageSize);
}
try {
PageInfo<Goods> page=srv.mgrQueryList(name, startDate, endDate,status, pageNumInt,pageSizeInt);
jr.setCode(0);
jr.setData(page.getList());
jr.setPageNum(pageNumInt);//当前页数
jr.setPageSize(pageSizeInt);//每页显示的记录数
jr.setPages(page.getPages());//总共的页数
jr.setTotal(page.getTotal());//总共记录数
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
jr.setCode(100000);
jr.setMsg("发生错误");
}
return jr;
}

