Spring PageHelper
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语句进行分页处理
许可协议:
CC BY 4.0