每天資訊mybatis——優秀的持久層框架

菜單

mybatis——優秀的持久層框架

1.mybatis的作用

mybatis是一款優秀的持久層框架。

傳統的JDBC(資料庫連線)主要完成建立與資料庫的連線、傳送SQL語句和處理資料庫返回結果。但是在實現這些功能需要繁瑣的步驟和程式碼,而mybatis很好解決了這些問題。其內部封裝了JDBC使得開發人員有更多的精力去關注sql語句本身,而不需要花費精力去處理驅動的載入,連線的建立等等的操作。

mybatis——優秀的持久層框架

2.mybatis的執行流程

首先透過Resources類載入配置好的mybatis。xml配置檔案,然後例項化(new)一個SqlSessionFactoryBuilder物件之後呼叫其build()方法。在build方法裡有XMLconfigBuilder的一個物件,呼叫它的parse()去解析已經載入的配置檔案。並將一個存有解析結果的configuration物件作為引數傳給build(與上面的build不是同一個,方法的過載)方法,這個build方法會返回一個DefaultSqlSessionFactory物件。

在得到DefaultSqlSessionFactory物件呼叫其openSession()方法得到sqlSession。在構建SqlSession的同時還生成transaction(事物)和executor(執行器,用於傳送並且執行sql語句)用於後續執行操作。

mybatis——優秀的持久層框架

3.mybatis的快取

mybatis有著非常強大的快取機制,極大地提高了查詢效率。

一級快取:

mybatis預設開啟的sqlSession級別的快取,會將我們第一次查詢的資料放入sqlSession中,在第二次查詢時直接從sqlSession中獲取。當sqlSession關閉快取清空,執行增、刪、改操作也會使一級快取失效(如果修改的是快取中的資料,那麼當再次查詢時再到快取中取明顯不合適。所以在執行了DML操作後會清空一級快取)。

二級快取:

二級快取也叫全域性快取需要手動開啟。他是mapper級別的快取,解決了一級快取的侷限性,可以實現sqlsession之間的資源共享。

要啟動二級快取只需要在mapper對映檔案中加,當然也可以在標籤中對二級快取進行各種設定。

mybatis——優秀的持久層框架