什么是PageHelper?
PageHelper是mybatis的通用分页插件,通过mybatis的拦截器实现分页功能,拦截sql查询请求,添加分页语句,最终实现分页查询功能(即不用自己写“limit 0 , 5” 的分页语句)
此篇文件参考:https://blog.csdn.net/LONG_Yi_1994/article/details/94399645
相关依赖(我的SpringBoot版本2.0.1.RELEASE)
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.10</version>
</dependency>
Mapper接口(这里的Page类型是PageHelper的类型,表示使用PageHelper的分页功能)
public interface InstockMapper {
public List<Instock> list();
}
.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace指定该mapper配置文件给哪个接口调用-->
<!--resultType指定封装返回数据的容器类型-->
<mapper namespace="com.example.clothingmanager.dao.InstockMapper">
<select id="list" resultType="Instock">
select * from tb_instock
</select>
</mapper>
注意:SQL语句后面不要加分号 “;”,否则会报错
测试(PageHelper.startPage(1, 5)设置分页参数)
@Test
public void test08(){
PageHelper.startPage(1, 5);
List<Instock> list = instockMapper.list();
PageInfo<Instock> page = new PageInfo<Instock>(list);
for(Instock user : page.getList()){
System.out.println(user);
}
}
PageHelper实现分页原理
PageHelper首先将前端传递的参数保存到page这个对象中,接着将page的副本存放入ThreadLoacl中,这样可以保证分页的时候,参数互不影响,接着利用了mybatis提供的拦截器,取得ThreadLocal的值,重新拼装分页SQL,完成分页。