mybatis一級快取在沒有使用事務後,本地看不到效果,查詢時還是查詢了兩次資料庫。
如下圖所示
//開啟事務,在同乙個方法(同乙個回話,一級快取才有效果)加上事務後效果如下:@transactional
public refund getrefundtest(long brefundid)
一級快取什麼時候會被清除一級快取的清除主要有以下兩個地方:
1、就是獲取快取之前會先進行判斷使用者是否配置了flushcache=true屬性(參考一級快取的建立**截圖),如果配置了則會清除一級快取。
2、mybatis全域性配置屬性localcachescope配置為statement時,那麼完成一次查詢就會清除快取。
3、在執行commit,rollback,update方法時會清空一級快取。
mybatis一級快取
autowired private sqlsessionfactory sqlsessionfactory autowired test transactional public void test selectall.size log.info 第2次查詢 selectall2.size 同乙個s...
MyBatis 一級快取
本地快取作用域預設為該sqlsession。當session flush或 close後,該session中的所有cache將清空。同一次會話期間,只要查詢過的資料都會儲存在當前sqlsession的乙個map中 key hashcode 查詢sql的id 編寫的sql語句 引數 1.不同的sqls...
MyBatis 快取 上 一級快取
在實際專案中,有些情況下相同的查詢語句可能被重複執行,mybatis 提供了一級快取來優化這種情況,相同的查詢 sql 會命中一級快取,直接返回,減少不必要的資料庫查詢提高效能。上面提到了資料庫 crud 操作最終都對映到了executor query和executor update方法上,當資料庫...