利用PageHelper分页插件简化操作

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语句进行分页处理

本站于2025年3月26日建立
使用 Hugo 构建
主题 StackJimmy 设计