# PageHelper分页插件

PageHelper分页插件

1 PageHelper作用

官网:https://pagehelper.github.io/

PageHelper是一个Mybatis的分页插件, 负责将已经写好的sql语句, 进行分页加工。官网说法:如果你也在用 MyBatis,建议尝试该分页插件,这一定是最方便使用的分页插件。分页插件支持任何复杂的单表、多表分页。

优点:无需你自己去封装以及关心sql分页等问题,使用很方便,前端取数据也很方便。

2 导入PageHelper插入依赖



    com.github.pagehelper
    pagehelper
    5.0.3

3 添加分页插件配置

3.1 SqlMapConfig.xml配置

如果是单独的MyBatis框架,需要在SqlMapConfig.xml添加分页插件的配置



    
    
        
        
        
        
    

必须注意配置的顺序,顺序出错,会执行报错!

这里PageHelper有一些参数可以设置,具体可以查看官网文档。

3.2 applicationContext.xml

如果是MyBatis与Spring整合,需要修改Spring的applicationContext.xml

  
  
  
    
      
        
          
            helperDialect=mysql
            reasonable=true
          
        
      
    
  

4 编写Dao方法

package com.yiidian.dao;
import com.yiidian.domain.Customer;
import java.util.List;

/**
 * Dao接口
 *一点教程网 - www.yiidian.com
 */
public interface CustomerDao {
    /**
     * 查询所有用户
     */
    public List findAll();
}

这里只需要定义普通查询的方法即可,无需为分页另外定义特殊的方法。

5 编写测试类

package com.yiidian.mybatis;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.yiidian.dao.CustomerDao;
import com.yiidian.domain.Customer;
import com.yiidian.utils.MyBatisUtils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * MyBatis测试类 - PageHelper分页插件的使用
 * 一点教程网 - www.yiidian.com
 */
public class TestCustomerDao {
    @Test
    public void test1(){
        //1.获取SqlSession对象
        SqlSession sqlSession = MyBatisUtils.getSession();

        //2.生成Dao代理对象
        CustomerDao customerDao = sqlSession.getMapper(CustomerDao.class);

        //3.设置分页参数
        int pageNun = 1; // 页码
        int pageSize = 2;// 每页显示条数
        PageHelper.startPage(pageNun,pageSize);

        //4\. 查询用户数据
        List list = customerDao.findAll();

        //5.把用户数据封装到PageInfo分页结果对象
        PageInfo page = new PageInfo<>(list);

        //6.取出PageInfo的属性
        //测试PageInfo全部属性
        //PageInfo包含了非常全面的分页属性
        System.out.println("当前页码="+page.getPageNum());
        System.out.println("每页显示条数="+page.getPageSize());
        System.out.println("当前页起始行号="+page.getStartRow());
        System.out.println("当前页结束行号="+page.getEndRow());
        System.out.println("总记录数="+page.getTotal());
        System.out.println("总页数="+page.getPages());
        System.out.println("是否为第1页="+page.isIsFirstPage());
        System.out.println("是否为最后1页="+page.isIsLastPage());
        System.out.println("是否有上一页="+page.isHasPreviousPage());
        System.out.println("是否有下一页="+page.isHasNextPage());
        System.out.println("当前页数据=");
        for(Customer c:page.getList()){
            System.out.println(c);
        }
        //7.关闭连接
        sqlSession.close();
    }
}

6 运行测试类,查看结果

PageHelper把所有分页结果数据封装到PageInfo对象,下面是打印出常用的属性

image

你可能感兴趣的:(# PageHelper分页插件)