分页插件 pageHelper

浪子不回头ぞ 提交于 2020-01-27 05:20:35

PageHelper是国内非常优秀的一款开源的mybatis分页插件,它支持基本主流与常用的数据库,例如mysql、oracle、mariaDB、DB2、SQLite、Hsqldb等。

查询数据库展示到前端的过程中不可避免的要考虑到分页问题,这时就引入了Mybatis的PageHelper插件,这个插件对分页功能进行了强有力的封装。下面来看看。

 

使用pageHelper

1.导入所需要的依赖

<!-- Mybatis 框架 -->
<dependency>
   <groupId>org.mybatis</groupId>
   <artifactId>mybatis</artifactId>
   <version>3.4.6</version>
</dependency>
		
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>5.1.30</version>
</dependency>
	
<!-- 日志依赖 -->
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
   <groupId>log4j</groupId>
   <artifactId>log4j</artifactId>
   <version>1.2.17</version>
</dependency>

<!-- pagehelper分页插件 -->
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
<dependency>
   <groupId>com.github.pagehelper</groupId>
   <artifactId>pagehelper</artifactId>
   <version>5.1.10</version>
</dependency>

2.在mybatis的全局配置文件中配置 插件拦截器 (注意配置顺序)

<!-- 配置插件      plugin标签配置一个插件      -->
<plugins>
 
  <!-- 配置分页插件  pageHelper  -->
  <!-- com.github.pagehelper为PageHelper类所在包名 -->
  <plugin interceptor="com.github.pagehelper.PageInterceptor">
      <property name="param1" value="value1"/>
  </plugin>
	
</plugins>

 

测试   

  • 使用分页插件的第一种常用方式  静态调用: PageHelper.startPage(pageNum,pageSize) 

这种方式是我们要掌握的 在你需要进行分页的 MyBatis 查询方法前调用PageHelper.startPage 静态方法即可,紧跟在这个方法后的第一个MyBatis 查询方法会被进行分页。

@Test
void  test()throw Exception{

  String resource = "mybatis_config.xml";
  InputStream inputStream = Resources.getResourceAsStream(resource);
  SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		
  //创建sql会话
  SqlSession session = sqlSessionFactory.openSession(true);
  //根据持久层接口反射创建持久层实现类
  EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);


  /*************************************************************
    使用分页插件的第一种方式:静态调用  PageHelper.startPage(pageNum,pageSize)
                                     pageNum:显示的页数,pageSize页数的条目
   **************************************************************/		

   //设置分页
   PageHelper.startPage(1,10); 查询第1页10条数据
    
   //查询所有员工  (由于设置了分页拦截器,这里只会查询出10条记录)
    List<Employee> list = mapper.selectAll();
		
	for(Employee e:list) {
		System.out.println(e.toString());
	}

}

输出

 

  • 第二种常用方式使用PageInfo对象管理页码

数据分页显示在前端上,我们还要计算:总页数、当前页、上一页、下一页,总记录数.....这些功能PageInfo对象已经为我们封装好啦。下面来看看

@Test
public void test(){

  String resource = "mybatis_config.xml";
  InputStream inputStream = Resources.getResourceAsStream(resource);
  SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		
  //创建sql会话
  SqlSession session = sqlSessionFactory.openSession(true);
  //根据持久层接口反射创建持久层实现类
  EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);


  
  //*******************分页**************************

  List<Employee> empAll = mapper.selectAll(); //查询出所有的员工

  PageHelper.startPage(5, 10); //查询第5页的10条数据
	
  List<Employee> empAll = mapper.selectAll(); //查询所有的员工
  System.out.println("List集合存储Employee的总数:"+empAll.size());
		
  //构造方法创建PageInfo对象管理页码
  PageInfo<Employee> info = new PageInfo<Employee>(empAll);  //将员工结果集List集合传入PageInfo构造方法  泛型指定
		
  System.out.println("当前页数:"+info.getPageNum()); 
  System.out.println("上页码:"+info.getPrePage());
  System.out.println("下页数:"+info.getNextPage());
  System.out.println("总页码:"+info.getPages());
  System.out.println("总记录数:"+info.getTotal()); 
		
  //getList 方法返回List集合
  for(Employee e:info.getList()) {
 	System.out.println(e.toString());
  }

}

 

输出:

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!