Mybatis 整体架构

Mybatis 分为三层架构

  • 基础支撑层
  • 核心处理层
  • 接口层

Mybatis 整体架构_第1张图片

基础支撑层

类型转换模块

微信公众号:CoderLi
JDBC类型与 Java 类型之间的相互转换、不管是入参还是结果集的转换、都是这个模块职责。

还有一个功能就是类型别名、这个有点类似 Spring 的别名、为了引用的时候名称更加简短

日志模块

Mybatis 的日志模块通过适配器模式可以集成主流的各种日志框架、Log4J、Logback等

反射工具模块

Mybatis 的反射工具、如 MetaObject 提供了一些更加灵活的 API 供我们调用

Binding 模块

生成 Mapper 接口的动态代理对象

数据源模块

微信公众号:CoderLi
也提供了与第三方数据源集成的相关接口

Mybatis 整体架构_第2张图片

缓存模块

Mybatis 的一级缓存和二级缓存

解释器模块

解释 mybatis-config 和 mapper 配置文件

事务管理模块

MyBatis 对数据库中的事务进行了一层简单的抽象,提供了简单易用的事务接口和实现。

Mybatis 整体架构_第3张图片

核心处理层

配置解释

依赖解释器模块、对全局配置、mapper 配置、注解配置进行解释

SQL 解释与 scripting 模块

动态SQL 的解释与生成

SQL 执行

Mybatis 执行一条 SQL、涉及到组件有:

Executor、StatementHandler、ParameterHandler 和 ResultSetHandler

Executor 会调用事务管理模块实现事务的相关控制,同时会通过缓存模块管理一级缓存和二级缓存。SQL 语句的真正执行将会由 StatementHandler 实现。那具体是怎么完成的呢?StatementHandler 会先依赖 ParameterHandler 进行 SQL 模板的实参绑定,然后由 java.sql.Statement 对象将 SQL 语句以及绑定好的实参传到数据库执行,从数据库中拿到 ResultSet,最后,由 ResultSetHandler 将 ResultSet 映射成 Java 对象返回给调用方,这就是 SQL 执行模块的核心。

Mybatis 整体架构_第4张图片

接口层

常用的 SqlSession 接口、SqlSessionFactory 接口等

https://kaiwu.lagou.com/course/courseInfo.htm?courseId=612#/detail/pc?id=6374

你可能感兴趣的:(Mybatis,Java,后端,Mybatis)