MyBatis的緩存機制主要有兩種:
一級緩存:也稱本地緩存,是MyBatis默認開啟的緩存機制。一級緩存是在同一個SqlSession中有效,當執行相同的SQL語句時,如果參數相同且查詢條件相同,則會從緩存中獲取結果,而不會再次發送SQL語句到數據庫。一級緩存是基于對象引用的緩存,當SqlSession關閉后,緩存也會被清空。
二級緩存:也稱全局緩存,是在多個SqlSession之間共享的緩存機制。二級緩存可以跨SqlSession共享數據,可以有效地減少數據庫的訪問次數。默認情況下,二級緩存是關閉的,需要手動配置開啟。開啟二級緩存后,MyBatis會將查詢結果放入緩存中,下次執行相同的SQL語句時,會先從緩存中獲取結果,如果緩存中存在,則直接返回結果,否則發送SQL語句到數據庫并將結果放入緩存中。
需要注意的是,MyBatis的緩存機制對于更新操作是敏感的,當執行insert、update、delete等更新操作時,會清空對應的緩存數據,保證緩存的一致性。另外,MyBatis的緩存機制是基于namespace級別的,即同一個namespace下的SQL語句共享同一個緩存。如果需要使用二級緩存,需要在Mapper XML文件中配置