天天看點

mybatis源碼解析一 擷取流解析二 擷取SqlSessionFactory對象解析三 擷取SqlSession對象解析四 擷取Mapper對象解析

目錄

解析内容

擷取流解析

擷取SqlSessionFactory對象解析

擷取SqlSession對象解析

擷取Mapper對象解析

一 擷取流解析

InputStream is= Resources.getResourceAsStream(resource);
           

通過getResourceAsStream擷取資源檔案,擷取的過程如下:

1 .1調用getResourceAsStream(String resource)方法

mybatis源碼解析一 擷取流解析二 擷取SqlSessionFactory對象解析三 擷取SqlSession對象解析四 擷取Mapper對象解析

 1.2調用getResourceAsStream(ClassLoader loader, String resource)方法

mybatis源碼解析一 擷取流解析二 擷取SqlSessionFactory對象解析三 擷取SqlSession對象解析四 擷取Mapper對象解析
1.3通過classLoaderWrapper.getResourceAsStream(resource, loader)方法來擷取流,我們再繼續跟進getResourceAsStream(resource, loader)方法
           
mybatis源碼解析一 擷取流解析二 擷取SqlSessionFactory對象解析三 擷取SqlSession對象解析四 擷取Mapper對象解析

1.4再繼續跟進this.getResourceAsStream(resource, this.getClassLoaders(classLoader))方法

mybatis源碼解析一 擷取流解析二 擷取SqlSessionFactory對象解析三 擷取SqlSession對象解析四 擷取Mapper對象解析

二 擷取SqlSessionFactory對象解析

 2.2 然後再往進跟

mybatis源碼解析一 擷取流解析二 擷取SqlSessionFactory對象解析三 擷取SqlSession對象解析四 擷取Mapper對象解析

2.3調用 this.build((InputStream)inputStream, (String)null, (Properties)null);方法

mybatis源碼解析一 擷取流解析二 擷取SqlSessionFactory對象解析三 擷取SqlSession對象解析四 擷取Mapper對象解析

2.4 再向this.build(parser.parse())方法跟進

mybatis源碼解析一 擷取流解析二 擷取SqlSessionFactory對象解析三 擷取SqlSession對象解析四 擷取Mapper對象解析

三 擷取SqlSession對象解析

mybatis源碼解析一 擷取流解析二 擷取SqlSessionFactory對象解析三 擷取SqlSession對象解析四 擷取Mapper對象解析

3.1這裡的openSession()方法是DefaultSqlSessionFactory類中的,是以我們要進入到此類中檢視

mybatis源碼解析一 擷取流解析二 擷取SqlSessionFactory對象解析三 擷取SqlSession對象解析四 擷取Mapper對象解析

 3.2再次進入 this.openSessionFromDataSource(this.configuration.getDefaultExecutorType(), (TransactionIsolationLevel)null, false);方法中檢視

mybatis源碼解析一 擷取流解析二 擷取SqlSessionFactory對象解析三 擷取SqlSession對象解析四 擷取Mapper對象解析

四 擷取Mapper對象解析

mybatis源碼解析一 擷取流解析二 擷取SqlSessionFactory對象解析三 擷取SqlSession對象解析四 擷取Mapper對象解析

4.1我們 需要進入到getMapper()方法中去,這裡調用的是DefaultSqlSession中的getMapper()方法

mybatis源碼解析一 擷取流解析二 擷取SqlSessionFactory對象解析三 擷取SqlSession對象解析四 擷取Mapper對象解析

4.2然後是調用配置中的getMapper方法(this.configuration.getMapper(type, this);)

mybatis源碼解析一 擷取流解析二 擷取SqlSessionFactory對象解析三 擷取SqlSession對象解析四 擷取Mapper對象解析

 4.3調用映射注冊器中getMapper方法擷取Mapper對象

mybatis源碼解析一 擷取流解析二 擷取SqlSessionFactory對象解析三 擷取SqlSession對象解析四 擷取Mapper對象解析

4.4通過MapperProxy使用反射來擷取最終的mapper對象

mybatis源碼解析一 擷取流解析二 擷取SqlSessionFactory對象解析三 擷取SqlSession對象解析四 擷取Mapper對象解析

繼續閱讀