1. 程式人生 > >Mybatis簡單理解

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查詢到資料將存在相同的二級快取區域中。