pageHelper详解

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

第一:添加依赖

    
        com.github.pagehelper
        pagehelper-spring-boot-starter
        1.2.5
    

第二:配置文件 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
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 userList = userMapper.getUserList(userName, userCompany);

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

你可能感兴趣的:(pageHelper详解)