mybatis源码总结

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

mybatis总结两个维度基础概念:
一、流程思路
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处理数据库操作结果resultSet

二、对象细节
(一)Configuration
1.保存setting信息
2.保存Environment信息(TransactionFactory【SpringManagedTransactionFactory】和DataSource)
3.保存mapperRegistry信息
4.保存mappedStatements信息

(二)SqlSessionFactoryBean
1.SqlSessionFactoryBean实现了Spring的FactoryBean,InitializingBean, ApplicationListener
2.在InitializingBean的afterPropertiesSet方法中构造SqlSessionFactory的默认DefaultSqlSessionFactory对象,该对象中保存了Configuration对象

(三)SqlSessionDaoSupport对象
所有Dao的父类,可以得到SqlSession。在实例化Dao的时候需要注入SqlSessionFactory对象。

(四)SqlSessionFactory对象
用来生产SqlSession对象,openSession和Configuration

(五)DefaultSqlSession对象
包含Configuration,Executor,autoCommit,Configuration用于得到各种信息数据,Executor也是通过Configuration创建的
SimpleExecutor和BaseExecutor是Executor的实现,Executor包装的是Transaction对象
ManagedTransaction是Transaction的实现,他包装的是Connection和Connection的提交和回滚

(六)MappedStatement对象
重要的是statementId,通过mapper.xml解析得到,被保存在Configuration对象中

(七)XMLScriptBuilder和NodeHandler
sql语句xml文件解析


三、深入分析....待续

 

转载于:https://my.oschina.net/u/1458864/blog/3012061

你可能感兴趣的:(mybatis源码总结)