Mybatis源码中文注释-学习步骤-持续更新中
一、学习步骤
1.点点源码!!!!!! 非常重要的是看网络他人解析文档的前提是“自己已看过”
2.看大佬的解析文档 对于大多数人包括博主没有那么多经验,看大佬的解析就非常好能加强记忆与分析能力
二、源码环境
本人注解源码git地址👈👈👈
拉取源码后打开的的mybatis-3-master
需要修改数据库配置文件
如果执行不了修改依赖的parent项目 这个项目与mybatis-3-master在同一个级别了修改成绝对地址,
三、设计模式
1.建造者(构建者)模式
例子:org.apache.ibatis.session.SqlSessionFactoryBuilder
2.单例模式
例子:ErrorContext.instance().resource(resource);/**这里将Mapper丢到了ThreadLocal里
3.工厂模式
例子:org.apache.ibatis.transaction.Transaction(数据库连接包装类)
4.装饰模式
例子:executor = new CachingExecutor(executor);(执行器加上缓存功能)
5.委派模式
例子:org.apache.ibatis.executor.statement.RoutingStatementHandler
6.责任链模式
mybatis中主要特点之一就是大量的handler,他们就是通过责任链来增加,执行
例子:org.apache.ibatis.plugin.InterceptorChain#pluginAll
四、预知核心对象
Configuration类:MyBatis所有的配置信息都维持在Configuration对象之中。
SqlSessionFactory类:操作SqlSession的工厂接口,具体的实现类是DefaultSqlSessionFactory
SqlSession接口:作为MyBatis工作的主要顶层API,表示和数据库交互的会话,完成必要数据库增删改查功能
Executor接口: MyBatis执行器,是MyBatis 调度的核心,负责SQL语句的生成和查询缓存的维护
enviroment对象:全局对象
MappedStatement对象:解析Sql信息存放的对象
BoundSql类:封装mybatis最终产生sql的类,包括sql语句,参数,参数源数据等参数
XMLConfigBuilder:解析mybatis中configLocation属性中的全局xml文件,内部会使用XMLMapperBuilder解析各个xml文件。
XMLMapperBuilder:遍历mybatis中mapperLocations属性中的xml文件中每个节点的Builder,比如user.xml,内部会使用XMLStatementBuilder:处理xml中的每个节点。
XMLStatementBuilder:解析xml文件中各个节点,比如select,insert,update,delete节点,内部会使用XMLScriptBuilder处理节点的sql部分,遍历产生的数据会丢到Configuration的mappedStatements中。
XMLScriptBuilder:解析xml中各个节点sql部分的Builder。
StatementHandler:封装了JDBC Statement操作,负责对JDBC statement 的操作,如设置参数、将Statement结果集转换成List集合。
ParameterHandler:负责对用户传递的参数转换成JDBC Statement 所需要的参数,
ResultSetHandler:负责将JDBC返回的ResultSet结果集对象转换成List类型的集合;
TypeHandler:负责java数据类型和jdbc数据类型之间的映射和转换
SqlSource:负责根据用户传递的parameterObject,动态地生成SQL语句,将信息封装到BoundSql对象中,并返回
五、大佬解析文章
👉👉👉👉Mybatis源码解析优秀博文👈👈👈👈