一、MyBatis的緩存機(jī)制
1、一級(jí)緩存(Local Cache)
MyBatis的一級(jí)緩存是默認(rèn)啟用的,它位于SqlSession對(duì)象內(nèi)部。在同一個(gè)SqlSession中執(zhí)行的查詢會(huì)將查詢結(jié)果存儲(chǔ)在一級(jí)緩存中。當(dāng)再次執(zhí)行相同的查詢時(shí),MyBatis會(huì)首先檢查一級(jí)緩存,如果緩存中存在結(jié)果,則直接從緩存中獲取,而不會(huì)再次查詢數(shù)據(jù)庫。
2、作用域
一級(jí)緩存的作用域是SqlSession級(jí)別,即同一個(gè)SqlSession中的查詢結(jié)果可以被共享。當(dāng)SqlSession關(guān)閉或進(jìn)行更新操作(插入、更新、刪除)時(shí),一級(jí)緩存會(huì)被清空。
3、緩存命中策略
MyBatis使用查詢語句的SQL語句、參數(shù)值和映射的結(jié)果類型作為緩存的鍵。當(dāng)執(zhí)行查詢時(shí),MyBatis會(huì)根據(jù)這些鍵來檢查緩存是否有匹配的結(jié)果。如果有,則直接返回緩存的結(jié)果,如果沒有,則執(zhí)行查詢并將結(jié)果存入緩存。
4、緩存配置
MyBatis提供了靈活的緩存配置選項(xiàng)。您可以在映射文件或配置文件中配置緩存的開啟和關(guān)閉,以及緩存的刷新策略、緩存大小等。可以根據(jù)實(shí)際需求進(jìn)行配置和調(diào)整。