每學習一個新知識,不管是框架,還是語言,永遠都是以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)