N

Norlcayn的博客

A text-focused Halo theme

  • 首页
  • 文章
  • 默认分类
  • 关于
主页 Spring PageHelper
文章

Spring PageHelper

发表于 2026-01-15 更新于 昨天
作者 Administrator
6~8 分钟 阅读

PageHelper

详细的案例可以在Java Tlias项目中的员工分页查询下查看

  • PageHelper是第三方提供的在MyBatis框架中用来实现分页的插件,用来简化分页操作,提高开发效率
  • 使用步骤: 1. 引入PageHelper的依赖 2. 定义Mapper接口的查询方法(无需考虑分页) 3. 在Service方法中实现分页查询
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.7</version>
</dependency>
// 查询员工数据
@Select("SELECT e.* FROM emp e ...")
public List<Emp> list();
public PageResult<Emp> page(Integer page, Integer pageSize) {
// 1. 设置分页参数
PageHelper.startPage(page, pageSize);

// 2. 调用Mapper接口方法
List<Emp> empList = emMapper.list();

// 3. 解析并封装结果
    Page<Emp> p = (Page<Emp>) list;// 父类需要调用子类特有的方法,所以需要向下转型
return new PageResult<Emp>(...);
}

当调用Mapper层的list方法查询时,PageHelper会通过MB的拦截器加上分页参数,并且返回的实际上是Page类型对象

用的是List接受返回的数据,**因为Page是List的实现类**,子类不需要强转就可以直接使用父类赋值

但是又由于需要调用Page的特有方法,所以父类又需要**向下转型**为子类

实现机制:

  • 通过MB拦截器对SQL语句进行修改
  • SELECT COUNT(0) FROM emp p …
  • SELECT … FROM emp e … LIMIT ?, ?

注意事项:

  • SQL语句结尾不要加分号;
  • 正确:@Select("SELECT ... FROM emp ...")
  • 错误:@Select("SELECT ... FROM emp ...;")
  • PageHelper只会对紧跟在其后的第一条SQL语句进行分页处理
后端 Java Web入门
许可协议:  CC BY 4.0
分享

相关文章

下一篇

Spring入门项目 - Tlias系统

上一篇

Spring MyBatis Plus

最近更新

  • Hello Halo
  • 状态机
  • 数据表设计规范
  • 缓存优化
  • 事务失效

热门标签

Halo 异常处理 Redisson 并行 Vue 并发 递归 请求限流 SpringAMQP 类加载器

目录

©2026 Norlcayn的博客. 保留部分权利。

使用 Halo 主题 Chirpy