Mybatis 整体架构

Mybatis 分为三层架构

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

微信公众号:CoderLi

基础支撑层

类型转换模块

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

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

日志模块

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

反射工具模块

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

Binding 模块

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

数据源模块

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

微信公众号:CoderLi

缓存模块

Mybatis 的一级缓存和二级缓存

解释器模块

解释 mybatis-config 和 mapper 配置文件

事务管理模块

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

微信公众号:CoderLi

核心处理层

配置解释

依赖解释器模块、对全局配置、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 执行模块的核心。

微信公众号:CoderLi

接口层

常用的 SqlSession 接口、SqlSessionFactory 接口等

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值