天天看點

Mybatis通用分頁插件PageHelper簡單使用

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

繼續閱讀