Mybatis源码解析-附中午注释源码

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源码解析优秀博文👈👈👈👈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值