天天看點

MyBatis(五)橫向分析Executor中的BaseExecutorBaseExecutor

本篇文章主要講述的是BaseExecutor(基礎執行器/一級緩存執行器),BaseExecutor的主要作用是:事務管理,執行關于一級緩存的操作。

BaseExecutor的存在是有必要的,如果沒有BaseExecutor,那麼隻能把管理事務和一級緩存下放到SimpleExecutor、ReuseExecutor、BatchExecutor中,這樣的話,就會讓三個子類的代碼重複性太高了,于是就把這一部分相同的操作都放到了BaseExecutor上

在分析BaseExecutor的源代碼時,不會再延深它的三個子類實作的方法,也就是那些以do開頭的方法,都會放到下一篇去講,本文講述的就是加了粗體這一塊的方法,query()->query()->queryFromDatabase()->doQuery()

BaseExecutor

BaseExecutor并沒有CachingExecutor那麼複雜,這是因為BaseExecutor的實作的一級緩存功能是比較簡單的,是線程不安全的,一級緩存的存活時間是非常短暫的,是以沒有必要把BaseExecutor設計的太複雜

一級緩存的命中條件

在分析BaseExecutor前,先來分析一下一級緩存的命中條件,也就是在什麼情況下,一級緩存才會生效

一級緩存的命中條件分為兩類:參數相關條件、操作與配置相關條件

參數相關條件

參數是指我們調用方法時,傳入的參數