美文网首页
Mybatis分页插件PageHelper

Mybatis分页插件PageHelper

作者: 大炮对着虫子 | 来源:发表于2017-10-15 09:58 被阅读212次

对于Mybatis,进行分页,网上有分页的插件,叫PageHelper,下载后,能够方便的实现分页。

1、下载jar包

如果是使用Maven工程,可直接引入依赖

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

或者直接去下载jar包

2、配置Mybatis的配置文件configuration.xml

  <plugins>
   
    <plugin interceptor="com.github.pagehelper.PageHelper">
        <property name="dialect" value="mysql"/>
     
      
        <property name="offsetAsPageNum" value="true"/>
      
        <property name="rowBoundsWithCount" value="true"/>
        
    </plugin>
  </plugins>

值得注意的一点的是,mybatis的配置文件中,元素的顺序是有要求的,不然会报错,元素的顺序:

 元素顺序:

properties

settings

typeAliases

typeHandlers

objectFactory

objectWrapperFactory

plugins

environments

databaseIdProvider

mappers

3、在执行sql查询语句前,加上下面这句话,即可进行分页限制。

public PageBean<VOrdercancel> SelectPage(int currentpage,int counts)
    {
         List<VOrdercancel> list=null;
        try {
            sqlSession=dbAccess.getSqlSession();
            IVOrdercancel ivOrdercancel=sqlSession.getMapper(IVOrdercancel.class);
//加上这句,相当于select * from tbname limit currentpage,counts;
            PageHelper.startPage(currentpage, counts);
            list=ivOrdercancel.select_vordercancel();
            
            sqlSession.commit();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally
        {
            sqlSession.close();
        }
        return new PageBean<VOrdercancel>(list);
    }

加上PageHelper.startPage(currentpage, counts);后的原理,其实就是在执行SQL语句的时候,对其进行拦截,对sql加上拼接了后面的limit 。

4、对查询后的数据进行封装。

package util;

import java.io.Serializable;
import java.util.List;

import com.github.pagehelper.Page;

public class PageBean<T> implements Serializable {
  
    private long total;        //总记录数
    private List<T> list;    //结果集
    private int pageNum;    // 第几页
    private int pageSize;    // 每页记录数
    private int pages;        // 总页数
    private int size;        // 当前页的数量 <= pageSize,该属性来自ArrayList的size属性
    
    /**
     * 包装Page对象,因为直接返回Page对象,在JSON处理以及其他情况下会被当成List来处理,
     * 而出现一些问题。
     * @param list          page结果
     * @param navigatePages 页码数量
     */
    public PageBean(List<T> list) {
        
        if (list instanceof Page) {
            Page<T> page = (Page<T>) list;
            this.pageNum = page.getPageNum();
            this.pageSize = page.getPageSize();
            this.total = page.getTotal();
            this.pages = page.getPages();
            this.list = page;
            this.size = page.size();
        }
    }

    public long getTotal() {
        return total;
    }

    public void setTotal(long total) {
        this.total = total;
    }

    public List<T> getList() {
        return list;
    }

    public void setList(List<T> list) {
        this.list = list;
    }

    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 int getPages() {
        return pages;
    }

    public void setPages(int pages) {
        this.pages = pages;
    }

    public int getSize() {
        return size;
    }

    public void setSize(int size) {
        this.size = size;
    }
    
}


完毕!

相关文章

网友评论

      本文标题:Mybatis分页插件PageHelper

      本文链接:https://www.haomeiwen.com/subject/prvquxtx.html