一、概念
查詢緩存指的是在內存或者外存上建立一個存儲空間,用來保存上次的查詢結果,夏促再進行同樣的查詢是,就直接從內存或者外存中讀取,大大提升查詢效率。
二、一級緩存
范圍:一個sqlsession對象,當一個sqlsession對象關閉后,對應的一級緩存會被清空。
清理條件:執行了增、刪、改的commit()方法
三、二級緩存(被多個sqlsession對象共享)
范圍:相同namespaced生成的mapper對象下所有的sqlsession對象
清理條件:執行了該Mapper對象的增、刪、改方法
原理:sqlsession1------->studentMapper中的查詢方法(從數據庫中獲取)------------>寫入二級緩存
sqlsession2-------->studentMapper中的查詢方法(從二級緩存中獲取)
sqlsession3-------->studentMapper提交的commit()方法(增、刪、改)---------->清理二級緩存
備注:兩個對象執行的方法和代碼均相同,不同之處是sqlseesion1中的數據是從數據庫中取,sqlsession2中的數據從二級緩存中取
1. 二級緩存的使用:
(1)開啟二級緩存
1>.Mybatis配置文件
<setting name="cacheEnable" value=""></setting>
2>.mapper.xml文件
在mapper內部加上<cache />
(2)對象實現序列化
2.禁用二級緩存
<select id="queryById" parameter="int" resultType="User" useCache="false"> select * from user where userid=#{userid} </select>
四、commit()清理緩存的原因
對數據庫進行增刪改查操作,如果不及時清理緩存,就會丟失數據的實時性,造成臟讀
如果有特殊情況,想要在執行commit()方法時並不進行清理緩存,可以在增刪改查的標簽里設置 flushCache="false"