springboot使用pagehelper分页插件

添加依赖

修改pom.xml

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.1.9</version>
</dependency>

配置

根据官网介绍,有2种方式:

  1. 配置在spring.xml中
  2. 配置在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:

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{
        //pageNum当前页数,pageSize每页显示记录数
        //注意:不能将 page 对象返回给前端,会得不到 pageNum、pageSize 等信息
        Page page=PageHelper.startPage(pageNum, pageSize, true);
        List list=dao.mgrQueryList(name, startDate, endDate,status);
        //需要将结果封装成PageInfo对象,才能得到 pageNum、pageSize、isFirstPage 等信息
        PageInfo<Goods> pageInfo=new PageInfo<Goods>(list,page.getPages());

        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;
    }