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<T>,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文件解析
三、深入分析....待续