美文网首页
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