引子
諸葛亮讀書"觀其大略,不求甚解“,嘿嘿,我感覺剛開始學習知識也得有個大略,暫時不明白細節沒有關系,mybatis 說白了就是對jdbc的封裝,
jdbc 先來復習下吧,嘿嘿,
public class JdbcTest {
public static void main(String[] args) throws SQLException, ClassNotFoundException {
//1獲取資料庫連接
String url = "jdbc:mysql://localhost:3306/ms?useCursorFetch=true";
String username = "root";
String password = "root";
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection(url, username, password);
//2 創建statement
PreparedStatement preparedStatement = connection.prepareStatement("select * from blog where id > ?");
//3 設定引數
preparedStatement.setInt(1,1);
//4 執行sql
ResultSet resultSet = preparedStatement.executeQuery();
//5 處理結果集
while (resultSet.next()){
int id = resultSet.getInt("id");
String title = resultSet.getString("title");
String content = resultSet.getString("content");
Blog blog = new Blog();
blog.setId(id);
blog.setTitle(title);
blog.setContent(content);
System.out.println(blog);
}
}
}
jdbc 無非就是
1 獲取資料庫連接,
2 創建statement,
3 設定引數,
4 執行sql
5 處理結果集
我們使用mybatis的時候, 只需要定義一個sql(可能有引數),然后告訴mybatis引數是什么,以及結果要封裝成什么樣子,mybatis就可以操作資料庫了,搞清楚mybatis是如何封裝jdbc的,也就搞清楚mybatis的原理了,
mybatis架構

功能架構講解:
我們把Mybatis的功能架構分為三層:
(1)介面層SqlSession:使用MyBatis的介面,通過這個介面,可以執行命令、獲取Mapper代理和管理事務,介面層一接收到呼叫請求就會呼叫資料處理層來完成具體的資料處理,
(2)資料處理層:負責具體的SQL查找、SQL決議、SQL執行和執行結果映射處理等,通俗點說就是對JDBC的封裝,
(3)基礎層:負責最基礎的功能支撐,包括連接管理、事務管理、配置加載和快取處理,這些都是共用的東西,將他們抽取出來作為最基礎的組件,
關鍵類(介面)介紹
Configuration mybatis會把全域配置以及mapper組態檔都封裝到這個類里面,
SqlSessionFactory SqlSession的工廠介面
Session SqlSession 是一個面向用戶(程式員)的介面,SqlSession 中提
供了很多操作資料庫的方法
MappedStatement sql底層封裝物件
作用:對操作資料庫存盤封裝,包括 sql 陳述句、輸入輸出引數
Executor 執行器是一個介面(基本執行器、快取執行器)
作用:SqlSession 內部通過執行器操作資料庫
ParameterHandler 引數處理器,負責設定PreparedStatement的引數
StatementHandler Statemen處理器,負責操作 Statement 物件來操作資料庫
ResultSetHandler 結果集封裝處理器,負責把結果封裝成需要的java物件
執行流程圖

上面這張圖是網上找的,我感覺把mybatis執行的核心流程畫的挺清楚的,弄清楚這張圖每個類的細節,就基本清楚了mybatis的原理了,
嘿嘿,如果有什么問題,歡迎大家指正,下一篇介紹SqlSession的創建程序,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/261361.html
標籤:其他
上一篇:什么是快取穿透,如何解決?
