【开源项目学习】源码剖析,学习MyBatis代码

版权声明:尊重博主原创文章,转载请注明出处 https://blog.csdn.net/weixin_39020940/article/details/82469905

【前言】

这篇文字不全是讲MyBatis代码,而是博主怎么根据代码系统学习梳理的过程,非专业,如有不对,欢迎指出

MyBatis源码地址:https://github.com/mybatis/mybatis-3/releases

代码分析过程用的代码地图工具参考链接:

https://blog.csdn.net/weixin_39020940/article/details/80633835

【基础知识】

首先,我们需要知道,MyBatis当前大家使用最多的功能是把数据库操作和代码解耦,通过接口类+xml定义sql语句即可实现数据库的操作访问,而对于MyBatis内部,核心的操作是如下两步:

1、xml解析后实例化为对应的sql操作

2、通过java动态代理,拦截接口调用,落地为对应的sql操作

动态代理,例如AOP,更倾向于在接口和实例之间搭建一个桥梁,同时支持一些实例调用前后的一些补充实现,而MyBatis中使用动态代理,则是直接植入式,让接口的实例化直接绑定MyBatis植入的sql实例

(插入全局文件分析)

main.java.org.apache.ibatis.type

Member Variable列下按列查找可以看出,所有类型的Handler实例都被TypeHandlerRegistry所持有,对外主要提供了Jdbc的数据类型到对应类型句柄的获取

  public TypeHandler<?> getTypeHandler(JdbcType jdbcType) {
    return JDBC_TYPE_HANDLER_MAP.get(jdbcType);
  }

(未完待续)

 

猜你喜欢

转载自blog.csdn.net/weixin_39020940/article/details/82469905