mybatis總結兩個維度基礎概念:
1、流程思路
1.初始化mybatis,讀取spring配置,初始化mybatis的入口類SqlSessionFactoryBean(數據源、mapper.xml文件路徑、configuration文件路徑)
2.初始化mybatis,讀取mybatis配置,初始化核心數據結構類Configuration(讀取mybatis的配置文件、Environment配置信息、Mapper.xml配置文件)
3.定義Dao,全部Dao須要繼承SqlSessionDaoSupport,而且要注入SqlSessionFactory,以便Dao能夠獲得session進行數據庫操做
4.使用Dao,關注兩個參數(statement句柄和入參),statement句柄的做用是從Configuration中找到MappedStatement,入參是要給MappedStatement構造sql語句
5.執行sql語句,按照resultType或者resultMap處理數據庫操做結果resultSetspring
2、對象細節
(一)Configuration
1.保存setting信息
2.保存Environment信息(TransactionFactory【SpringManagedTransactionFactory】和DataSource)
3.保存mapperRegistry信息
4.保存mappedStatements信息sql
(二)SqlSessionFactoryBean
1.SqlSessionFactoryBean實現了Spring的FactoryBean<T>,InitializingBean, ApplicationListener
2.在InitializingBean的afterPropertiesSet方法中構造SqlSessionFactory的默認DefaultSqlSessionFactory對象,該對象中保存了Configuration對象數據庫
(三)SqlSessionDaoSupport對象
全部Dao的父類,能夠獲得SqlSession。在實例化Dao的時候須要注入SqlSessionFactory對象。session
(四)SqlSessionFactory對象
用來生產SqlSession對象,openSession和Configuration數據結構
(五)DefaultSqlSession對象
包含Configuration,Executor,autoCommit,Configuration用於獲得各類信息數據,Executor也是經過Configuration建立的
SimpleExecutor和BaseExecutor是Executor的實現,Executor包裝的是Transaction對象
ManagedTransaction是Transaction的實現,他包裝的是Connection和Connection的提交和回滾mybatis
(六)MappedStatement對象
重要的是statementId,經過mapper.xml解析獲得,被保存在Configuration對象中app
(七)XMLScriptBuilder和NodeHandler
sql語句xml文件解析ui
3、深刻分析....待續xml