第七节直接引入mabatis-plus,本节可不导入
一、什么是PageHelper
PageHelper是一款好用的开源免费的Mybatis第三方物理分页插件
二、添加PageHelper依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.7</version>
</dependency>
三、添加PageHelper配置
在application.yml中添加
pagehelper:
helper-dialect: mysql
reasonable: true
support-methods-arguments: true
params: count=countSql
page-size-zero: true
四、使用方法
UserInfoMapper.xml
<select id="selectAll" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from user_info
</select>
UserInfoMapper
List<UserInfo> selectAll();
UserInfoService
PageInfo<UserInfo> selectAll(Integer pageNum, Integer pageSize);
UserInfoServiceImpl
@Override
public PageInfo<UserInfo> selectAll(Integer pageNum, Integer pageSize) {
//开启分页查询,写在查询语句上方
//只有紧跟在PageHelper.startPage方法后的第一个Mybatis的查询(Select)方法会被分页。
PageHelper.startPage(pageNum, pageSize);
List<UserInfo> userInfoList = userInfoMapper.selectAll();
PageInfo<UserInfo> pageInfo = new PageInfo<>(userInfoList);
return pageInfo;
}
UserInfoController
@PostMapping("/selectAll")
@ApiOperation(value = "查询所有用户信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "pageNum", value = "当前页码", dataType = "Integer", paramType = "query"),
@ApiImplicitParam(name = "pageSize", value = "每页显示条数", dataType = "Integer", paramType = "query")
})
public RestResult<PageInfo<UserInfo>> selectAll(@RequestParam(defaultValue = "0") Integer pageNum,
@RequestParam(defaultValue = "0") Integer pageSize) {
PageInfo<UserInfo> pageInfo = userInfoService.selectAll(pageNum, pageSize);
return RestResult.getSuccessResult(pageInfo);
}
五、PageHelper中默认PageInfo的成员变量介绍
//当前页
private int pageNum;
//每页的数量
private int pageSize;
//当前页的数量
private int size;
//当前页面第一个元素在数据库中的行号
private int startRow;
//当前页面最后一个元素在数据库中的行号
private int endRow;
//总记录数
private long total;
//总页数
private int pages;
//结果集
private List<T> list;
//第一页
private int firstPage;
//前一页
private int prePage;
//是否为第一页
private boolean isFirstPage;
//是否为最后一页
private boolean isLastPage;
//是否有前一页
private boolean hasPreviousPage;
//是否有下一页
private boolean hasNextPage;
//导航页码数
private int navigatePages;
//所有导航页号
private int[] navigatepageNums;
六、功能测试
地址:http://192.168.1.104:8080/userInfo/selectAll
情况一:不传参数,默认为全查询
{
"code": "000000",
"msg": "操作成功",
"data": {
"total": 2,
"list": [
{
"id": 1,
"userName": "2",
"password": "3"
},
{
"id": 2,
"userName": "2",
"password": null
}
],
"pageNum": 1,
"pageSize": 0,
"size": 2,
"startRow": 1,
"endRow": 2,
"pages": 0,
"prePage": 0,
"nextPage": 0,
"isFirstPage": true,
"isLastPage": true,
"hasPreviousPage": false,
"hasNextPage": false,
"navigatePages": 8,
"navigatepageNums": [],
"navigateFirstPage": 0,
"navigateLastPage": 0
}
}
地址:http://localhost:8080/userInfo/selectAll?pageSize=2&pageNum=1
情况二:参数 page=2&size=1
{
"code": "000000",
"msg": "操作成功",
"data": {
"total": 2,
"list": [
{
"id": 1,
"userName": "2",
"password": "3"
},
{
"id": 2,
"userName": "2",
"password": null
}
],
"pageNum": 1,
"pageSize": 2,
"size": 2,
"startRow": 1,
"endRow": 2,
"pages": 1,
"prePage": 0,
"nextPage": 0,
"isFirstPage": true,
"isLastPage": true,
"hasPreviousPage": false,
"hasNextPage": false,
"navigatePages": 8,
"navigatepageNums": [
1
],
"navigateFirstPage": 1,
"navigateLastPage": 1
}
}
七、项目地址
PS:可以通过tag下载本文对应的代码版本
八、结尾
pageHelper集成已完成,有问题可以联系chenzhenlindx@qq.com