最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis分頁插件PageHelper的分頁原理剖析

 更新時間:2023年08月17日 11:03:28   作者:信仰_273993243  
這篇文章主要介紹了Mybatis分頁插件PageHelper的分頁原理剖析,PageHelper作為一個啟動器,那么就和其他啟動器加載一樣,先讀取spring.factories文件里面配置的類,轉成Bean加載本系統(tǒng)中,然后執(zhí)行他的前置后置處理方法,完成初始化,需要的朋友可以參考下

前言

先說下大致的流程:PageHelper作為一個啟動器,那么就和其他啟動器加載一樣,先讀取spring.factories文件里面配置的類,轉成Bean加載本系統(tǒng)中

然后執(zhí)行他的前置后置處理方法,完成初始化,最后當我們執(zhí)行目標方法時,通過攔截器對目標方法進行攔截,以達到拓展的目的。

一、加載啟動器里面的Bean

1、PageHelper的spring.factories

2、里面就包含一個PageHelperAutoConfiguration類這是一個配置類,看下有哪些內容

在方法org.springframework.core.io.support.SpringFactoriesLoader#loadSpringFactories里面會去加載其他Jar下面的spring.factories文件,然后把文件下配置的類掃描添加到Map里面去。

3、那么spring是在哪里把jar包下面的spring.factories掃描進去的

其他starter的spring.factories加載也是如此

4、加載完之后需要把這個Bean注冊到Spring容器中

因為是一個Configuration,所以基本注冊成Bean都是在ConfigurationClassPostProcessor里面完成

最終會: org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader#registerBeanDefinitionForImportedConfigurationClass 方法里面把PageHelperAutoConfiguration注冊到Spring容器中

下面看下PageHelperAutoConfiguration有什么作用

二、實例化PageHelperAutoConfiguration

該方法在實例化Bean的時候,調用BeanPostProcessorsBefore回調方法會觸發(fā)下面的方法

往sql攔截器鏈中添加攔截器

三、使用

先看下分頁查詢的代碼

其中有個setLocalPage,就是利用ThreadLocal,設置變量值

public abstract class PageMethod {
    protected static final ThreadLocal<Page> LOCAL_PAGE = new ThreadLocal<Page>();
    protected static boolean DEFAULT_COUNT = true;
    /**
     * 設置 Page 參數
     *
     * @param page
     */
    protected static void setLocalPage(Page page) {
        LOCAL_PAGE.set(page);
    }
}

最終在執(zhí)行sql查詢的時候,會觸發(fā)到攔截器

看下這個攔截器做了什么?

主要是判斷是否需要分頁,是否需要count操作,等等,最后返回List

到此這篇關于Mybatis分頁插件PageHelper的分頁原理剖析的文章就介紹到這了,更多相關PageHelper的分頁原理內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • mybatis中使用InsertProvider注解報錯解決全過程

    mybatis中使用InsertProvider注解報錯解決全過程

    這篇文章主要介紹了mybatis中使用InsertProvider注解報錯解決全過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Spring Boot和Vue跨域請求問題原理解析

    Spring Boot和Vue跨域請求問題原理解析

    這篇文章主要介紹了Spring Boot和Vue跨域請求問題原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • Spring集成MyBatis?及Aop分頁的實現(xiàn)代碼

    Spring集成MyBatis?及Aop分頁的實現(xiàn)代碼

    這篇文章主要介紹了Spring集成MyBatis?及Aop分頁的實現(xiàn),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • 深入解析Mybatis中緩存機制及優(yōu)缺點

    深入解析Mybatis中緩存機制及優(yōu)缺點

    MyBatis緩存分為一級(SqlSession級,自動維護)和二級(Mapper級,需配置),通過減少數據庫訪問提升性能,但存在臟數據和分布式不兼容風險,適合高頻查詢低頻修改場景,需合理配置以平衡效率與一致性,本文給介紹Mybatis中緩存機制及優(yōu)缺點,感興趣的朋友跟隨小編一起看看吧
    2025-08-08
  • Java小白第一次就能看懂的網絡編程

    Java小白第一次就能看懂的網絡編程

    網絡編程是指編寫運行在多個設備(計算機)的程序,這些設備都通過網絡連接起來。本文介紹了一些網絡編程基礎的概念,并用Java來實現(xiàn)TCP和UDP的Socket的編程,來讓讀者更好的了解其原理
    2021-08-08
  • IDEA整合Dubbo+Zookeeper+SpringBoot實現(xiàn)

    IDEA整合Dubbo+Zookeeper+SpringBoot實現(xiàn)

    初學者,想自己動手做一個簡單的demo,本文主要介紹了IDEA整合Dubbo+Zookeeper+SpringBoot實現(xiàn),需要的朋友們下面隨著小編來一起學習學習吧
    2021-06-06
  • Springboot接收?Form?表單數據的示例詳解

    Springboot接收?Form?表單數據的示例詳解

    這篇文章主要介紹了Springboot接收?Form?表單數據的實例代碼,本文通過圖文實例代碼相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • 詳解SpringBoot項目整合Vue做一個完整的用戶注冊功能

    詳解SpringBoot項目整合Vue做一個完整的用戶注冊功能

    本文主要介紹了SpringBoot項目整合Vue做一個完整的用戶注冊功能,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • 詳解SpringMVC中使用Interceptor攔截器

    詳解SpringMVC中使用Interceptor攔截器

    SpringMVC 中的Interceptor 攔截器也是相當重要和相當有用的,它的主要作用是攔截用戶的請求并進行相應的處理,這篇文章主要介紹了詳解SpringMVC中使用Interceptor攔截器,有興趣的可以了解一下。
    2016-12-12
  • 解決@PostConstruct注解導致的程序無法啟動(@PostConstruct的執(zhí)行)

    解決@PostConstruct注解導致的程序無法啟動(@PostConstruct的執(zhí)行)

    這篇文章主要介紹了解決@PostConstruct注解導致的程序無法啟動(@PostConstruct的執(zhí)行)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01

最新評論

车险| 英超| 黄大仙区| 桃园县| 内黄县| 固原市| 枣阳市| 鄢陵县| 叶城县| 镇江市| 滦平县| 镇赉县| 许昌县| 璧山县| 罗城| 二连浩特市| 辽阳县| 寻乌县| 剑阁县| 宁南县| 西昌市| 蒙自县| 桐梓县| 乡城县| 南岸区| 泰安市| 六盘水市| 泾川县| 安塞县| 昭平县| 玉树县| 佛冈县| 定陶县| 永康市| 山阳县| 象州县| 济南市| 松桃| 西华县| 桐庐县| 辽宁省|