什麼是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,完成分頁。