pageHelper详解

#pageHelper Mybatis分页插件以及原理 #

第一:添加依赖

    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper-spring-boot-starter</artifactId>
        <version>1.2.5</version>
    </dependency>

第二:配置文件 application.properties

# mybatis分页插件 - pageHelper
pagehelper.helper-dialect=mysql
pagehelper.reasonable=true
pagehelper.support-methods-arguments=true

第三:dao层

/**
*mapper层查询所有
*/
@Select("select * from 表名")
List<实体类> queryAll(); 

第四 service

List<实体类> queryAll(int pagIndex,int pageSize);

第五 serviceImpl

List<实体类> queryAll(int pagIndex,int pageSize){
	PageHelper.startPage(pageIndex, pageSize);
    List<*> lists = Mapper.queryAll();
    PageInfo<*> pageInfo = new PageInfo<*(lists);	
}
pageInfo 就是最后分页的结果 若pageInfo 返回值不是list 修改service 返回值为 Map<String,Object>
map.put(“pageInfo ”,pageInfo ) ; 
return map;

第六 controller层

 List<*> queryAll(int pagIndex,int pageSize){
	return service.queryAll(int pagIndex,int pageSize);
}
备注 :#### 这是最简单的分页 还可以在mapper层加条件

查询成功之后返回的数据

"tokenCheck": 1,
"status": 1,
"information": "查询成功",
"data": {
	"total": 40298, //总数
	"list": [
		{
			"carNumber": "晋-AG506A",
			"frequency": 513
		}
	],
	"pageNum": 1, //当前页码
	"pageSize": 1,//每页显示的条数
	"size": 1,//长度
	"startRow": 1,//当前页面第一个元素在数据库中的行号
	"endRow": 1,//当前页面最后一个元素在数据库中的行号
	"pages": 40298,//页码数
	"prePage": 0,//前一页
	"nextPage": 2,//第一页
	"isFirstPage": true,//是否是第一页
	"isLastPage": false,//是否是最后一页
	"hasPreviousPage": false,//是否有前一页
	"hasNextPage": true,//是否有下一页
	"navigatePages": 8,//导航页码数
	"navigatepageNums": [
		1,
		2,
		3,
		4,
		5,
		6,
		7,
		8
	],//所有导航页号
	"navigateFirstPage": 1,
	"navigateLastPage": 8,
	"lastPage": 8,
	"firstPage": 1
	}
}

注意:

分页插件的一些坑:

PageHelper.startPage(pageNum, pageSize)的位置:

PageHelper.startPage(pageNum, pageSize) 只对该语句以后的第一个查询语句得到的数据进行分页!!!

譬如:下面这段代码本来想根据 userName 以及 userCompany 进行条件查询的,但是 startPage() 后面紧跟的不是 userMapper.getUserList(userName, userCompany),因此,分页“并不会生效”,或者说分页用错地方了,用在 userMapper.getById(id) 上了,自然看不到想要的效果。(可自行在控制台查看 sql 的执行效果)

// 设置分页查询条件
PageHelper.startPage(pageNum, pageSize);

// 根据id查询
int user = userMapper.getById(id);

// 根据 userName 和 userCompany 进行条件查询
List<User> userList = userMapper.getUserList(userName, userCompany);

以上就是分页原理 以及分页插件的坑

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值