MyBatis核心类对象主要有俩个:
1:对相关配置文件信息进行封装的Configuration对象
2:用来执行数据库操作的Executor对象。
核心对象----存储类对象Configuration
Configuration对象主要有三个作用:
1:封装MyBatis配置文件内容(XPathParser(MyBatis基于XPath封装的xml解析工具类)进行xml文件解析):
2:封装Mapper文件相关内容:
MappedStatement对象:
MyBatis解析Mapper.xml配置文件映射成MappedStatement对象,每一个id标签对应一个MappedStatement。
MappedStatement部分源码:
MappedStatement使用BoundSql封装sql语句:
3:创建其它相关对象:
StatementHandler:
MyBatis进行数据库操作的真正核心,封装了JDBC的statement。
既然StatementHandler负责数据库操作,那么为什么还要封装Executor对象?
因为StatementHandler只是将Executor最主要的功能:增删改查等基本功能,而Executor还有其它作用
ParmeterHandler
封装对参数的处理操作
ResultSetHandler
封装对结果集的处理操作
TypeHandler
负责数据库类型和Java之间对应的类型转换
Configuration对象创建时机:
创建SqlSessionFactory时通过XPathParser解析xml配置文件,进而创建Configuration,通过Configuration作为参数创建SqlSessionFactory。
核心对象-----操作类对象Executor
核心实现类:
MyBatis默认使用SimpleExecuter。
Executor的最终还是通过调用Configuration创建的各种Handler实现其功能。
Executor的创建时机
通过SqlSessionFactory创建SqlSession时创建Executor:
总结:
我们在创建SqlSessionFactory时通过xml文件解析技术将Mybatis配置文件映射成Configuration对象,将Mapper.xml文件映射成MappedStatement配置文件同时封装进Configuration对象。同时Configuration对象创建StatementHandler等底层操作工具类。
通过SqlSessionFactory创建SqlSession时创建出Executor操作类,Executor通过StatementHandler等对象完成具体的数据库操作和事务,缓存等功能。