啥也不是
mybatis是通过XML配置的方来定制化 SQL、存储过程以及高级映射等。所以首先他要解析相关mapper配置文件并将解析相互来的的结果放在Configuration类中。个人认为主要的一些放在如下(类名.方法):
SqlSessionFactoryBuilder.build() 参数是配置文件(这个配置是mybatis的配置不是我们开发经常要写sql文件配置)的InputStream,功能是调用XMLConfigBuilder.parse()获取Configuration,然后创建DefaultSqlSessionFactory对象
XMLConfigBuilder.parse() 参数是配置文件(这个配置是mybatis的配置不是我们开发经常要写sql文件配置)的InputStream,功能是调用XPathParser.evalNode()获取XNode节点,然后调用XMLConfigBuilder.parseConfiguration解析节点。解析节点是通过不同的节点调用不同的方法解析并肩解析的结果保存到Configuration中。在解析中最主要还是解析我们的sql配置文件,它是在XMLConfigBuilder.mapperElement中解析
MLConfigBuilder.mapperElement() 参数是Xnode节点这里,功能主要是调用XMLMapperBuilder.parse方法这个方法才是重点解析每个我们开发经常要写的sql文件等。
XMLMapperBuilder.parse() 参数这个才是我们开发经常要写sql配置,功能主要是解析我们的sql文件,这里面又分为解析我们常常用到的、,,,,等标签,解析好后调用configuration.addMappedStatement方法将MappedStatement对象保存到mappedStatements这个map中,key就是namespace加标签的id。其实一般我们在使用SSM框架的时候也就是从这里开始的。mybaris-spring里面是从这里开始的。
SqlSession :作为MyBatis工作的主要顶层API,表示和数据库交互的会话,完成必要数据库增删改查功能
Executor : MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护
StatementHandler : 封装了JDBC Statement操作,负责对JDBC statement 的操作,如设置参数、将Statement结果集转换成List集合
ParameterHandler : 负责对用户传递的参数转换成JDBC Statement 所需要的参数
ResultSetHandler: 负责将JDBC返回的ResultSet结果集对象转换成List类型的集合
TypeHandler 负责java数据类型和jdbc数据类型之间的映射和转换
MappedStatement MappedStatement维护了一条select
SqlSource 负责根据用户传递的parameterObject,动态地生成SQL语句,将信息封装到BoundSql对象中,并返回
BoundSql 表示动态生成的SQL语句以及相应的参数信息
MyBatis所有的配置信息都维持在Configuration对象之中
SqlSession | 作为MyBatis工作的主要顶层API,表示和数据库交互的会话,完成必要数据库增删改查功能 |
---|---|
Executor | MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护 |
StatementHandler | 封装了JDBC Statement操作,负责对JDBC statement 的操作,如设置参数、将Statement结果集转换成List集合 |
– | – |
ParameterHandler | 责对用户传递的参数转换成JDBC Statement 所需要的参数 |
ResultSetHandler | 负责将JDBC返回的ResultSet结果集对象转换成List类型的集合 |
-MappedStatement - | -MappedStatement维护了一条select- |
TypeHandler | 负责java数据类型和jdbc数据类型之间的映射和转换 |
SqlSource | 负责根据用户传递的parameterObject,动态地生成SQL语句,将信息封装到BoundSql对象中,并返回 |
-Configuration - | -MyBatis所有的配置信息都维持在Configuration对象之中- |
BoundSql | 表示动态生成的SQL语句以及相应的参数信息 |