1. 程式人生 > >Mybatis的一級快取和二級快取執行順序

Mybatis的一級快取和二級快取執行順序

1、先判斷二級快取是否開啟,如果沒開啟,再判斷一級快取是否開啟,如果沒開啟,直接查資料庫

2、如果一級快取關閉,即使二級快取開啟也沒有資料,因為二級快取的資料從一級快取獲取

3、一般不會關閉一級快取

4、二級快取預設不開啟

5、如果二級快取關閉,直接判斷一級快取是否有資料,如果沒有就查資料庫

6、如果二級快取開啟,先判斷二級快取有沒有資料,如果有就直接返回;如果沒有,就查詢一級快取,如果有就返回,沒有就查詢資料庫;

 

==》綜上:先查二級快取,再查一級快取,再查資料庫;即使在一個sqlSession中,也會先查二級快取;一個namespace中的查詢更是如此;

 

如下一個小栗子說明即使在一個sqlSession中,也會先查二級快取:

二級快取開啟的情況下:

同一個sqlSession中執行兩次查詢:

結果:

說明:兩次列印中,第二次還去查了二級快取;說明當二級快取開啟的情況下,即使是一個sqlSession中的快取,都會先去查一下二級快取,再返回查一級快取; 所以說,快取執行順序是:二級快取-->一級快取-->資料庫