1. 程式人生 > >mybatis高階(3)_延遲載入_深度延遲_一級快取_二級快取

mybatis高階(3)_延遲載入_深度延遲_一級快取_二級快取

mybatis高階(3)_延遲載入_深度延遲_一級快取_二級快取

設定延遲載入需要在mybatis.xml中設定

注:

侵入式延遲載入為真時是延遲載入

侵入式延遲載入為假時是深度延遲載入

複製程式碼

<!-- 延遲載入和深度延遲載入 -->
    <settings>
        <!-- 延遲載入 -->
        <setting name="lazyLoadingEnabled" value="true" />
        <!-- 侵入式延遲載入,預設值是true -->
        <setting name="aggressiveLazyLoading" value="false" />
    </settings>

複製程式碼

 

一級快取

注:

1.框架底層使用map集合儲存快取

2.MyBatis查詢快取機制。根據快取區的作用域與生命週期,可劃分為兩種:一級快取和二級快取.MyBatis查詢快取的作用域是根據對映檔案的namespace劃分的,相同的namespace的mapper查詢資料放在同一個快取區域。不同namespace下的資料互不干擾。無論是一級快取還是二級快取,都是按照namespace進行分別存放的.一級、二級快取的不同之處在於,SqlSession一旦關閉,則SqlSession中的資料將不存在,即一級快取就不復存在。而二級快取的生命週期與真個應用同步,與SqlSession是否關閉無關.換句話說,一級快取是在同一執行緒(同一SqlSession)間共享資料,而二級快取是在不同執行緒(不同的SqlSession)間共享資料。

3.Mybatis一級快取預設整合並開啟

4.MyBatis的查詢依據是:Sql的id+SQL語句

5.執行增刪改時會清空快取,雖然 底層都是update但是,sql標籤必須對應操作,不然起到清空快取的作用

 

二級快取

1,開啟二級快取3個條件

(1)在mybatis中設定cacheEnabled=true

(2)在Mapper檔案中新增<cache/>標籤

(3)實體類必須實現serialize介面