《MyBatis 技术内幕》阅读梳理 第一章 MyBatis快速入门

点击查看合集
Mybatis 整体架构分为三层,分别是基础支持层、核心处理层、接口层
在这里插入图片描述

基础支持层(第二章)

基础支持层包含整个MyBatis的基础模块。

反射模块

该模块对java原生的反射进行了良好的封装,提供了更加简洁的API,并且对反射操作进行了一系列优化,例如缓存了类的元数据,提高了反射操作的性能。

类型转换模块

MyBatis为简化配置文件所提供的别名机制,是该模块的功能之一。另一个功能是实现JDBC与Java类型之间的转换,该功能会在为SQL语句绑定参数和映射查询结果级时用到。

日志模块

提供详细的日志输出信息。并且可以集成多种日志框架。

资源加载模块

资源加载模块主要是对类加载器进行封装,确定类加载器的使用顺序,并提供了加载类文件以及其他资源文件的功能。

解析器模块

该模块可以对XPath进行封装,为MyBatis初始化时解析mybatis-config.xml配置文件以及映射配置文件提供良好的支持。另一个功能是为处理动态SQL语句中的占位符提供支持。

数据源模块

数据源是实际开发中常用的组件,数据源提供了比较丰富的功能,如连接池、检测连接状态等。选择性能优秀的数据源组件对于提升ORM框架乃至整个应用的性能都是十分重要的。该组件为MyBatis提供了自身的数据源组件,同时也支持对第三方数据源组件的集成。

事务管理

MyBatis对数据库中数据进行了抽象,其自身提供了相应的事务接口和简单实现。MyBatis在很多情况下都会与Spring框架集成。并且由Spring框架对事务进行管理.

缓存模块

MyBatis提供了一级缓存和二级缓存(由缓存模块实现)。MyBatis自带的这两级缓存以及应用程序是运行在同一个JVM中,共享同一块堆空间。因此,如果缓存数据过多,会严重影响性能。因此如果在缓存数据过多时应该使用Redis等非关系型数据库。

Binding模块

用户可以直接调用Mapping接口的相应方法(不用手动实现,MyBatis会为其创建代理对象)。从而避免了调用方法时,SQL节点拼写错误,导致在运行阶段才能发现的问题。

核心处理层(第三章)

在核心处理层中,实现了Mybatis的核心处理流程,其中包括MyBatis的初始化以及完成一次数据库操作的涉及到的全部流程。

配置解析

在MyBatis初始化过程中,会加载mybatis-config.xml配置文件、映射配置文件以及Mapper接口中的注解信息,解析后的配置信息会形成相应的对象并保存到Configuration对象中。之后利用Configuration对象创建SqlSessionFactory对象。初始化后,可以得到SqlSessionFactory创建SqlSession对象并完成数据库操作。

SQL解析与scripting模块

MyBatis实现了动态SQL语句的功能,使得程序员不用在拼凑SQL语句。并且提供了多中动态SQL语句对应的节点。如
scripting模块会根据用户传入的实参,解析映射文件中定义的动态SQL节点,并形成数据库可执行的SQL语句。之后会处理SQL语句中的占位符,绑定用户传入的实参。

SQL执行

SQL语句的执行涉及多个组件,其中比较重要的是 Executor StatementHandler ParameterHandler ResultSetHandler。Executor主要负责维护一/二级缓存。并提供数据库事务相关操作。它将数据库相关操作委托给StatementHandler完成。StatementHandler首先通过ParameterHandler完成SQL语句的实参绑定,然后通过java.sql.Statement对象执行SQL语句并返回结果集,然后通过ResultSetHandler完成结果集的映射,得到结果对象并返回
在这里插入图片描述

插件

用户可以通过添加自定义插件的方式对Mybatis进行扩展.自定义插件可以改变MyBatis的默认行为,例如可以连接SQL语句并对其进行重写。

接口层(第三章)

接口层的核心是SqlSession接口。该接口中定义了MyBatis暴露给应用程序调用的API,是上层应用与MyBatis交互的桥梁。

猜你喜欢

转载自blog.csdn.net/qq_30033509/article/details/111303049