完整專案下載:私信回覆A024,即可回去原始碼下載連結~
談到mybatis,大家應該並不陌生,不管大型、小型專案中,很多都會用到mybatis,其特徵無非就是操作簡單、封裝資料庫便於呼叫。記住,砸門只要專心寫SQL就行,如果SQL簡便,SQL文都不用寫咯,直接呼叫內部封裝方法~
1、一級快取
mybatis預設會有的快取,作用域在一個SqlSession生命週期內,SqlSession會被清空的條件是:
執行增、刪、改操作
手動關閉:SqlSession。close()
1.1 最簡單的已經快取,就是不用做任何快取的配置
1.2 第一次查詢和第二次查詢中間,插入一次更新
1.3 關閉SqlSession,然後再次查詢
2、二級快取
2.1 開啟二級快取
mybatis-config。xml配置檔案加入setting
People。xml檔案中(mapper檔案),加入:
2.2 測試二級快取
2.3 二級快取,也會在增、刪、改操作後,清除快取滴
2.4 二級快取在同一個mapper檔案中,是跨SqlSession的
除非在SQL中加入屬性:useCache=“false”,關閉二級快取,或者乾脆不設定二級快取
2.5 如果關閉二級快取,如上圖所示,就會去看一級快取有木有(在SqlSession未關閉的情況下),如下圖所示,二級快取被關閉,但是有一級快取,所以2次同樣的SQL查詢,還是隻會訪問資料庫一次
3、自定義快取
3.1 引入jar包(砸用ehcache快取)
3.2 加入ehcache.xml配置檔案
3.3 測試
4、事務隔離級別
4.1 如下圖,同一個事務,在另外一個事務對資料更新前後,查出的資料是一樣的,因為系統預設的事務隔離級別為:REPEATABLE-READ(可重複讀)導致的現象,就是說對於同一個事務的生命週期內,讀取的資料是一致的(但是,砸門得把二級快取給禁了,因為這個快取會影響到測試,還需要在相應的statement中加入flushCache="true"屬性)。
4.2 如果希望讀取的資料是實時的話,需要在開啟一個事務的時候,把事務的隔離級別改為:事務隔離級別改成READ-COMMITTED(讀已提交),這樣就OK了,如下圖(禁用二級快取)
自己學習的一些mybatis快取知識,給大家分享下,大家可以在下方評論區發表下自己的評論哦~
完整專案下載:私信回覆A024,即可回去原始碼下載連結~