mybatis主要工作
将包含 if等标签的复杂数据库操作语句解析为纯粹的 SQL语句。
将数据库操作节点和映射接口中的抽象方法进行绑定,在抽象方法被调用时执行数据库操作。
将输入参数对象转化为数据库操作语句中的参数。
将数据库操作语句的返回结果转化为对象。
在初始化阶段,MyBatis 主要进行了以下几项工作。
根据配置文件的位置,获取它的输入流 InputStream。
从配置文件的根节点开始,逐层解析配置文件,也包括相关的映射文件。解析过程中不断将解析结果放入 Configuration对象。
以配置好的 Configuration对象为参数,获取一个 SqlSessionFactory对象。
MyBatis源码结构概述
分组结构
· 基础功能包:这些包用来为其他包提供一些外围基础功能,如文件读取功能、反射操作功能等。这些包的特点是功能相对独立,与业务逻辑耦合小。
· 配置解析包:这些包用来完成配置解析、存储等工作。这些包中的方法主要在系统初始化阶段运行。
· 核心操作包:这些包用来完成数据库操作。在工作过程中,这些包可能会依赖基础功能包提供的基础功能和配置解析包提供的配置信息。
这些包中的方法主要在数据库操作阶段运行。按照功能划分好的包如下所示。
· 基础功能包:-exceptions-reflection-annotations-lang-type-io-logging-parsing
· 配置解析包:-binding-builder-mapping-scripting-datasource
· 核心操作包:-jdbc-cache-transaction-cursor-executor-session-plugin
源码阅读过程中有一个非常重要的技巧,那就是从整个项目的外围源码入手。
· 外围源码很少依赖核心源码,相对独立。先阅读外围源码,受到其他未阅读部分的干扰较小。
· 核心源码大量依赖外围源码。在阅读核心源码时应确保其涉及的外围源码均已阅读完毕,这样可以降低核心源码的阅读难度。
异常包
- 遇到不了解的类、方法时,直接跳转到类、方法的定义处查看其原生注释是学习 Java编程、阅读项目源码非常有效的方法。