ssm框架使用pagehelper分页插件(非maven工程)

下载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种方式:

  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

需要增加 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;
    }

原文出处:/show_1EF6OWCmbWTK.html