mybatis源码总结

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

相关文章
相关标签/搜索