Mybatis系列笔记六Mybatis 的分页查询

2022-08-27 12:46:40

Mybatis 的分页查询

使用 RowBounds

RowBounds 是 Mybatis 提供的一个专门处理分页的对象。在 RowBounds 对象中有两个成员变量

  • offset:偏移量,从 0 开始计数
  • limit:限制条数

使用 RowBounds 进行分页,非常方便,不需要在 SQL 语句中写 limit,即可完成分页 功能。但是由于它是在 SQL 查询出所有结果的基础上截取数据的,所以在数据量大的 SQL 中并不适用,它更适合在返回数据结果较少的查询中使用

  • 接口
List<Users>selectUsersRowBounds(RowBounds rowBounds);
  • mapper
<!--查询所有数据使用 RowBounds 实现分页处理--><selectid="selectUsersRowBounds"resultType="users"> 
	select * from users</select>

使用 SQL 语句分页

  • 接口
List<Users>selectUsersLimit(@Param("offset")int offset,@Param("limit")int limit);
  • mapper
<!--查询所有数据使用 limit 实现分页处理--><selectid="selectUsersLimit"resultType="users"> 
	select * from users limit #{offset},#{limit}</select>

PageHelper 分页插件

PageHelper 是一款非常好用的开源免费的 Mybatis 第三方分页插件。它基于 plugin 的方 式与 Mybatis 整合。通过 PageHelper 所提供的 API 完成对数据的分页查询

相关配置

  • pom.xml
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.1.11</version></dependency>
  • 全局配置文件中
<plugins><plugininterceptor="com.github.pagehelper.PageInterceptor"><!-- 设置数据库类型
	Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL 六种数据库--><propertyname="helperDialect"value="mysql"/></plugin></plugins>

分页查询 API

PageHelper.startPage(int pageNum,int pageSize);
给定分页参数,该方法需要在执行查询之前调用,相关参数如下:

参数含义
pageNum起始的页数,从 1 开始计算
pageSize每页显示的条数

PageInfo 对象

API作用
pageInfo.getList()获取分页查询结果
pageInfo.getTotal()获取查询总条数
pageInfo.getPages()获取总页数
pageInfo.getPageNum()获取当前页
pageInfo.getSize()获取每页显示的条数

PageHelper使用

publicclassPageHelperTest{publicstaticvoidmain(String[] args){SqlSession sqlSession=MybatisUtils.getSqlSession();UsersMapper usersMapper=sqlSession.getMapper(UsersMapper.class);UsersExample usersExample=newUsersExample();PageHelper.startPage(3,2);List<Users> list= usersMapper.selectByExample(usersExample); 
		list.forEach(System.out::println);PageInfo<Users> pageInfo=newPageInfo<>(list);//获取结果集List<Users> result= pageInfo.getList(); 
		result.forEach(System.out::println);//获取总条数System.out.println("总条数:"+pageInfo.getTotal());//获取总页数System.out.println("总页数"+pageInfo.getPages());//获取当前页System.out.println("当前页"+pageInfo.getPageNum());//获取每页显示的条数System.out.println("每页条数"+pageInfo.getSize());}}
  • 作者:绿豆蛙给生活加点甜
  • 原文链接:https://blog.csdn.net/qq_53226437/article/details/123038833
    更新时间:2022-08-27 12:46:40