PageHelper是第三方提供的在Mybatis框架中用来实现分页的插件,用来简化分页操作,提高开发效率
利用PageHelper分页插件简化操作
使用前提:导入依赖
在pom.xml中导入PageHeper的依赖
1
2
3
4
5
6
|
<!--分页插件PageHelper-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
|
导入依赖后记得重新加载一下Maven
原始方式
原始方式-Mapper层:
1
2
3
4
5
6
7
8
|
// 查询总记录数
@Select("select count(*) from ……")
public Long count();
// 查询结果列表
@Select("select * from …… limit #{start}, #{pageSize}")
public List<Emp> list(Integer start, Integer pageSize);
|
原始方式-Service层:
1
2
3
4
5
6
7
8
9
|
public PageResult<Emp> page(Integer page, Integer pageSize) {
// 获取总记录数
Long total = empMapper.count();
// 获取数据列表
Integer start = (page - 1) * pageSize;
List<Emp> rows = empMapper.list(start, pageSize);
// 封装分页结果
return new PageResult<Emp>(total, rows);
}
|
使用PageHelper后
PageHelper-Mapper层:
1
2
3
|
// 查询数据列表
@Select("select * from ……")
public List<Emp> list();
|
PageHelper-Service层:
1
2
3
4
5
6
7
8
9
|
public PageResult<Emp> page(Integer page, Integer pageSize) {
// 设置分页参数
PageHelper.startPage(page, pageSize);
// 查询结果列表
List<Emp> empList = empMapper.list();
// 解析查询结果并封装
Page<Emp> p = (Page<Emp>) empList;
return new PageResult<Emp>(p.getTotal(), p.getResult());
}
|
PageHelper实现机制与注意事项
机制:拦截你的查询语句,然后将其拆分为两条语句,第一条为select count(0) ……,第二条为…… limit ?,?
注:
1.Mapper层用注解查询时,SQL语句结尾不能加;
2.PageHelper只会对紧跟在其后的第一条SQL语句进行分页处理