跳至主要內容
MyBatis-插件模块
  • 插件模块实际上还是基于Java的jdk代理实现,提供第三方扩展mybatis使用
  • 通常我们使用mybatis的插件模块来扩展sql日志的打印,重写sql,分页插件等

模块详情

image-20240501160112517

静态属性

private final List<Interceptor> interceptors = new ArrayList<>();

HFwas...大约 3 分钟mybatismybatis
MyBatis-反射模块

代码结构

image-20240415212919270
  • 可以从测试类当中看到反射类的作用主要有几个:


HFwas...小于 1 分钟mybatismybatis
MyBatis-异常模块

代码结构

image-20240415213702096
  • 主要定义了mybatis自己的异常类,PersistenceException是mybatis的基类,继承IbatisException,但是IbatisException已经被废弃

ExceptionFactory

  • 将异常转换为mybatis自己的业务错误,
public class ExceptionFactory {

  private ExceptionFactory() {
    // Prevent Instantiation
  }

  // 转换异常为mybatis自己的业务报错,
  public static RuntimeException wrapException(String message, Exception e) {
    return new PersistenceException(ErrorContext.instance().message(message).cause(e).toString(), e);
  }

}

HFwas...小于 1 分钟mybatismybatis
MyBatis-数据源模块

模块详情

image-20240505152256405

类DataSourceFactory

public interface DataSourceFactory {
  /**
   * 设置DataSource相关的属性
   * @param props
   */
  void setProperties(Properties props);

  /**
   * 获取 DataSource 相关的设置
   * @return
   */
  DataSource getDataSource();

}

HFwas...大约 6 分钟mybatismybatis
MyBatis-概述
  • Mybatis地址fork官方仓库很久之前,但是一直断断续续阅读源码,这次希望重新拾起来

架构图

  • mybatis主要分为三大块,接口层,数据处理层,基础支撑层
image-20240407231556413

核心处理层


HFwas...小于 1 分钟mybatismybatis
MyBatis-解析模块
  • 主要负责解析mybatis当中的myabtis-config.xml文件,封装了java底层提供的xpath模块,提供了自己的解析方法
  • 处理配置文件当中的动态sql提供支持
  • 后续parsing 模块下的所有类其实都是围绕着上述两个功能展开的

模块详情

  • 大概结构如下图:
image-20240407232326225
  • 可以看到parsing包下边只有几个类,代码大约只有947行

HFwas...大约 3 分钟mybatismybatis