Mybatis框架中SqlSessionFactory這個類是用來幹嘛的?
首先SqlSessionFactory與SqlSession都是同一個介面
SqlSessionFactory是通過SqlSessionFactoryBuilder的build方法建立的
而build方法建立的是一個SqlSessionFactory的實現類,叫DefaultSqlSessionFactory
然後這個實現類主要用的設計模式是建造者(build)模式,而裡面最終要達到的一個目的是為了創建出DefaultSqlSession,這個是SqlSession的實現類.
前面說了SqlSession也是同一個介面,那麼SqlSession=SqlSessionFactory.openSession()就相當於SqlSession=DefaultSqlSession這個實現類.
那麼這個實現類是幹什麼的呢?這個實現類可以進行增刪查改以及事務操作等.
那麼DefaultSqlSession是怎麼進行這些操作的呢?答:通過呼叫Executor執行器.
所以,咱們平時見到的SqlSession.select()等等其實是在操作DefaultSqlSession.select()的方法,而DefaultSqlSession的方法其實也不是就能夠實現對資料庫進行操作的,而是通過呼叫Executor執行器來執行
而Executor執行器其實也是一個介面,而在解析配置檔案的時候已經解析出來SQL,那麼根據一路傳過來的SQL以及引數等資訊,Executor再排程StatementHandler等物件對資料庫進行增刪查改操作.
總結:現在你應該明白了吧,其實我們看到的都是表面,你認為的SqlSession能進行資料庫操作其實不是的,是它的實現類再呼叫底層的Executor,底層的Executor再排程相關資料庫操作物件才搞定的,而再要深入它的相關物件,那麼就深似海了…