MyBatis框架的工作原理

每學習一個新知識,不管是框架,還是語言,永遠都是以helloworld開始的,我們的mybatis也一樣是這樣子的

1.獲取sqlSessionFactory對象:SqlSessionFactory  sqlSessionFactory =  getSqlSessionFactory();

解析文件的每一個信息保存在Configuration中,返回包含了Configuration的DefaultSqlSession對象

注意:MappedStatement:代表一個增刪改查的詳細信息

----------Configuration封裝了所有配置文件的信息---------總結:把配置文件的信息解析並保存在Configuratiion對象中,返回包含了Configuration的DefaultSqlSession對象

2.獲取sqlSession對象:sqlSession openSession = sqlSessionFactory.openSession();

返回一個DefaultSqlSession的對象,他包含了 Executor和Configuration 

這一步會創建Executor對象


-----------返回SqlSession的實現類DefaultSqlSession的對象,他包含了 Executor和Configuration,Executor會在這一步被創建。

3.獲取接口代理的對象(會爲接口自動創建一個代理對象,代理對象去執行增刪改查):MapperProxy

getMapper,使用MapperProxyFactory創建一個MapperProxy的代理對象

代理對象包含了DefaultSqlSession(Executor)執行增刪改查


---------------getMapper返回接口的代理對象,包含了SqlSession對象-----------

4.執行增刪改查的方法:


總結:

1.根據配置文件初始化出Configuration對象

2.創建出DefaultSqlSession對象

他裏面包含Configuration和Executor(根據全局配置文件中的defaultExecutorType創建出對應的Executor)

3.DefaultSqlSession.getMapper():拿到Mapper接口對應的MapperProxy

4.MapperProxy裏面有DefaultSqlSession

5.執行增刪改查方法:

調用DefaultSqlSession的增刪改查(Executor)

會創建一個StatementHandler對象(同時會創建出ParameterHandler和ResultSetHandler)

調用StatementHandler預編譯參數以及設置參數值

使用ParameterHandler來給sql設置參數

調用StatementHandler的增刪改查方法

使用ResultSetHandler封裝結果

注意:

四大對象每個創建的時候都有一個interceptorChain.pluginAll(ParameterHandler)


 






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