MyBatis的二級緩存是指緩存在SqlSessionFactory級別的緩存,可以被多個SqlSession共享。
其原理如下:
當一個查詢語句被執行時,MyBatis會首先檢查二級緩存中是否存在相應的緩存數據,如果存在,則直接返回緩存結果。
如果二級緩存中不存在相應的緩存數據,則會去數據庫中執行相應的查詢語句,并將查詢結果緩存到二級緩存中。
當其他SqlSession執行相同的查詢語句時,會先檢查二級緩存中是否存在相應的緩存數據,如果存在,則直接返回緩存結果,而不再去數據庫中執行查詢語句。
當對數據庫中的數據進行新增、修改、刪除等操作時,會清空相應的二級緩存數據,以保證緩存數據的一致性。
需要注意的是,MyBatis的二級緩存是默認開啟的,但并不是所有的查詢語句都適合使用二級緩存。對于頻繁變動的數據,或者對數據一致性要求較高的場景,建議禁用二級緩存。可以通過在映射文件中的