關於mybatis的緩存網上有不少相關的文章,本人首先是看過文章,可是本着學習態度和加深理解,如下是我的跟蹤源碼的記錄。html
緩存分三種,1)一級緩2)二級緩存(通常指myatis內置的實現緩存方式)3)引入第三方緩存(本質上就是二級緩存的一種實現方式),引用http://blog.csdn.net/grhlove123/article/details/47808025數據庫
1) 一級緩存緩存
1 首先一級緩存也就是查詢緩存,所謂的查詢緩存其實就是一個HashMap<Object,Object>mybatis
2 整個查詢緩存的流程,也就是map的數據的存入、獲取和更新學習
① 首先緩存的存入和獲取,在每次查詢以前mybatis是先去緩存中根據拼接出來的key來查找數據,當沒有找到時,將執行數據庫查詢,而後將結果集存入緩存,以下圖源碼截圖.net
圖 1-1htm
圖 1-2blog
② 緩存的更新是在執行更新數據(包含增刪改)操做時清除全部查詢緩存get
圖 2-1源碼
圖 2-2
2)二級緩存
1 二級緩存默認全局開啓,可是局部不開啓,引用https://www.cnblogs.com/QQParadise/articles/5109633.html
二級緩存其實也是HashMap而且緩存數據的存入、獲取和更新(包含增刪改)和一級緩存同樣,可是這裏是兩個HashMap,首先是mybatis內置不少種實現方式,第一個HashMap就是用來存放執行實現方式的緩存,第二個就是存放數據的,以下圖
圖 3-1
圖 3-2
圖 3-3