前言
web开发少不了分页,本文将简单介绍使用基于spring-boot
+ mybatis
+ pageHelper
技术实现数据库分页。
本文算是对上一篇spring-boot集成mybatis的一个补充。
pageHelper简介
使用MyBatis
作为数据访问层进行对sql语句分页的最好用的插件。
建议去pageHelper官网看一看。
特点:
- 物理分页:支持常见的12种数据库。Oracle,MySql,MariaDB,SQLite,DB2,PostgreSQL,SqlServer等。
- 支持多种分页方式:支持常见的RowBounds(PageRowBounds),PageHelper.startPage 方法调用,Mapper 接口参数调用。
- QueryInterceptor 规范:使用 QueryInterceptor 规范,开发插件更轻松。
集成pageHelper
三步完成集成:
- maven依赖
- 配置pageHelper
- 代码使用及测试
maven依赖
此处依赖在集成了mybatis的基础上增加:
<!-- pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
配置pageHelper
在application.yml
里增加:
# 分页配置
pagehelper:
helper-dialect: mysql
reasonable: "true"
support-methods-arguments: "true"
params: count=countSql
代码使用及测试
根据官网之如何在代码中使用中的推荐,我们使用静态方法PageHelper.startPage
来实现分页。
首先是SbpUserMapper接口增加方法:
public interface SbpUserMapper {
List<SbpUser> getAll();
}
对应的SbpUserMapper.xml增加sql:
<select id="getAll" resultMap="BaseResultMap">
SELECT * FROM sbp_user
</select>
代码使用,传参当前页为1,每页条数显示5条:
@Test
@Rollback
public void pageByPageHelper() throws Exception {
PageHelper.startPage(1, 5);
List<SbpUser> users = sbpUserMapper.getAll();
Page<SbpUser> page = (Page<SbpUser>) users;
System.out.println("total count :" + page.getTotal());
System.out.println("pages :" + page.getPages());
System.out.println("data :" + page.getResult());
}
输出:
total count :21
pages :5
data :Page{count=true, pageNum=1, pageSize=5, startRow=0, endRow=5, total=21, pages=5, reasonable=true, pageSizeZero=false}
还有更多的用法请参考官方文档。
结束语
pageHelper还是非常好用的,简单,集成方便,是和mybatis搭配的分页插件首选。除此之外,大家一定要会自行写分页接口,除此之外还要 知其然,知其所以然。看其源码实现与设计理念,得到的不仅仅是分页。