MyBatis技术内幕读书笔记--------第一章

本文详细解读Mybatis的架构,包括基础支持层的反射、类型转换、日志和资源加载,核心处理层的配置解析和SQL执行,以及SqlSession接口。重点介绍插件、缓存、事务管理和数据绑定。关键词:mybatis、映射配置、SqlSession、动态SQL、事务管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mybatis整体架构

Mybatis整体架构

  1. 基础支持层:
    • 反射模块:对 Java 原生的反射进行了封装,且对反射操作进行了优化,缓存了类的元数据,提高了反射操作的性能。
    • 类型转换模块:提供别名机制和JDBC类型与Java类型转换。
    • 日志模块:主要集成第三方日志框架。
    • 资源加载模块:对类加载器进行封装,确定类加载器的使用顺序,并提供了加载类文件以及其他资源文件的功能。
    • 解析器模块:一是提供对XPath的封装以解析初始化配置文件和映射配置文件;二是处理动态SQL中的占位符。
    • 数据源模块:基础功能组件,包括连接池功能、连接状态检测等。
    • 事务管理模块:对数据库中的事务进行了抽象,其提供了相应的事务接口和简单实现。
    • 缓存模块:提供了缓存以减少数据库压力,依赖JVM内存提供缓存功能。
    • Binding模块:通过 Binding 模块将用户自定义的Mapper接口与映射配置文件关联,系统通过调用自定义Mapper接口中的方法执行相应SQL语句。
  2. 核心处理层:
    • 配置解析:加载mybatis配置文件、映射配置文件以及Mapper接口中的注解信息,解析后的配置信息会形成相应的对象并保存到Configuration 对象中。
      • <resultMap>节点(即 ResultSet 的映射规则)会被解析成 ResultMap;示例中定义的<result> 节点(即属性映射)会被解析成ResultMapping等。
    • SQL 解析与 scripting 模块:解析并处理文件中的动态SQL,替换如<where>等生成MySQL可解析的SQL,再通过scripting模块用传入参数替换占位符。
    • SQL 执行:语句的执行涉及包括在Executor、StatementHandler、ParameterHandler和ResultSetHandler。
      • Executor:负责维护一级缓存和二级缓存,并提供事务管理的相关操作,数据库相关操作委托给 StatementHandler 完成,再通过 ParameterHandler 完成SQL语句的实参绑定,通过 Statement 对象执行SQL语句并得到结果集,最后通过 ResultSetHandler 完成结果集的映射,得到结果对象并返回 。
    • 插件:通过自定义插件对Mybatis功能进行拓展。
  3. 接口层:
    • SqlSession接口:MyBatis 暴露给应用程序调用的 API ,也就是上层应用与MyBatis 交互的桥梁。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值