Mybatis個人簡單理解

Mybatis是對jdbc的封裝,它讓數據庫底層操作變的透明。mybatis的操作都是圍繞一個sqlSessionFactory實例展開的。mybatis通過配置文件關聯到各實體類的Mapper文件,Mapper文件中配置了每個類對數據庫所需進行的sql語句映射。在每次與數據庫交互時,通過sqlSessionFactory拿到一個sqlSession,再執行sql命令。

配置文件中需要配置數據源、數據庫信息、配置SqlSession,標明mapper映射,註解驅動
mybatis實現了DAO接口與xml映射文件的綁定,自動爲我們生成接口的具體實現,使用起來更加的方便,可以靈活的編寫sql,支持編寫動態sql,將業務邏輯層和數據訪問邏輯分離,更易維護。

一級緩存

一級緩存是SqlSession級別的緩存。在操作數據庫時需要構造sqlSession對象,在對象中有一個數據結構用於存儲緩存數據。不同的sqlSession之間的緩存數據區域是互相不影響的。也就是他只能作用在同一個sqlSession中,不同的sqlSession中的緩存是互相不能讀取的。

一級緩存的工作原理:
在這裏插入圖片描述
類似於redis緩存:第一次查詢數據,先查緩存,如果有記錄,直接讀取;如果沒有記錄,再查數據庫,同時寫入緩存。更新數據同理,更新數據先更新緩存,再更新數據庫;亦或者先刪除緩存,修改完數據庫再次寫入緩存。
二級緩存原理:

在這裏插入圖片描述
二級緩存是mapper級別的緩存,多個SqlSession去操作同一個Mapper的sql語句,多個SqlSession可以共用二級緩存,二級緩存是跨SqlSession的。UserMapper有一個二級緩存區域(按namespace分),其它mapper也有自己的二級緩存區域(按namespace分)。每一個namespace的mapper都有一個二級緩存區域,兩個mapper的namespace如果相同,這兩個mapper執行sql查詢到數據將存在相同的二級緩存區域中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章