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

Mybatis 的分页查询

使用 RowBounds

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

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

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

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

使用 SQL 语句分页

  • 接口
List<Users> selectUsersLimit(@Param("offset") int offset,@Param("limit") int limit);
  • mapper
<!--查询所有数据使用 limit 实现分页处理--> 
<select id="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> 
	<plugin interceptor="com.github.pagehelper.PageInterceptor"> 
		<!-- 设置数据库类型
	Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL 六种数据库--> 
		<property name="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使用

public class PageHelperTest { 
	public static void main(String[] args) { 
		SqlSession sqlSession = MybatisUtils.getSqlSession(); 
		UsersMapper usersMapper =sqlSession.getMapper(UsersMapper.class); 
		UsersExample usersExample = new UsersExample(); 
		PageHelper.startPage(3,2); List<Users> list = usersMapper.selectByExample(usersExample); 
		list.forEach(System.out::println); 
		PageInfo<Users> pageInfo = new PageInfo<>(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()); 
	} 
}
  • 7
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

绿豆蛙给生活加点甜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值