Mybatis執行體系一

                                     mybatis 執行體系一

前言: mybatis是一款半自動的orm框架,簡化了jdbc查詢.

我們傳統的JDBC 查詢是這樣子的 

public class MybatisTest {
    String url = "jdbc:mysql://localhost:3306/python";
    String username ="root";
    String password ="123456";
    private Connection connection;


    @Before
    public void init() throws SQLException, ClassNotFoundException {
        // 因爲有了SPI ,所以我們不需要手動的去Class.forName
        //        Class.forName("com.mysql.jdbc.driver");
        connection = DriverManager.getConnection(url,username,password);
    }
    @After
    public void finish() throws SQLException {
        connection.close();
    }
    @Test
    public void testJdbc () throws SQLException {
        String sql = "select  * from  git";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        ResultSet resultSet = preparedStatement.executeQuery();
        while (resultSet.next()) {
            System.out.println(resultSet.getString(1));
        }
        resultSet.close();
        preparedStatement.close();
    }
}

知識點  SPI ->Service Provider Interface 因爲有了spi機制 ,我們不需要自己去Class.forName去加載類

Mybatis 的查詢流程是這樣子的。

使用mybatis 後,我們不需要去處理結果集合,只需要使用對應的數據類型來接收就好了,代碼的結構性和整潔性得到了提升。

前言完畢。

 

現在我們簡單的打斷點debug一下。

發現第一步走的是 mapperProxy.invoke方法

第二步走的是 MapperMethod。execute 方法

第三步走的是 sqlsession 的 selectList方法

第四步走的是 CachingExecutor 的query方法

第五步走的是BaseExecutor 的query方法

第六步驟走的是

doquery 方法

第七步驟走得是preparedStatement 的query方法

第八步 使用 resulthandler 處理結果 並返回

 

簡單看完上面的執行流程以後我們可以把mybatis的 流程分成四大塊

到此mybatis的基本執行體系分析完成。

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