核心的功能模块:
binding:把传入的参数对象转换为sql后的条件
executor:负责sql的执行和拼接
statement:SimpleStatementHandler,负责sql的实际执行
baseExecutor
session:创建session,session工厂,configuration初始化
transanction:事务
type:参数类型转换
scripting:
mapping:ParameterMapping
ResultMapping
MappedStatement
TypeHandler
ResultSetHandler
spring对mybatis的支持
MapperFactoryBean 实现了ibatistemplate
mybatis拦截器:org.apache.ibatis.plugin.Interceptor
org.apache.ibatis.session.ResultHandler.class
org.apache.ibatis.session.RowBounds.class
org.apache.ibatis.session.SqlSessionFactory.class
MyBatis基本执行流程,
1.首先使用SqlSessionFactoryBean在spring初始化的时候调用buildSqlSessionFactory()建立sqlSessionFactory,spring通过调用mybatis的SqlSessionFactoryBuilder建立SqlSessionFactory
2.SqlSessionFactory提供了openSession方法,建立起session,在这个过程中注入事务,通过configuration新建Executor执行器,同时新建SqlSession对象
3.执行SqlSession的查询方法。
4.通过statement查询到MappedStatement,调用执行器Executor中相应的方法,进行操作。
5.Mybatis定义了几种Executor实现
6.Executor调用相应的查询方法,StatementHandler 对参数进行封装,DefaultParameterHandler对传入的参数进行映射,其中会调用到TypeHandler以及多种实现。
调用resultHandler对返回结果进行封装。