MyBatis构架设计学习------MyBatis的整体架构

一、基础框架图

MyBatis模块图解

二、各模块的基本作用

--------------------基础支持层--------------------

1、反射模块

MyBatis的反射模块中专门对原生的java反射进行了良好的封装,提供简洁易用的API,方便上层调用。并且对反射操作进行了优化,提高反射性能。

2、类型转换模块

别名机制和JDBC类型与Java类型之间的转换都需要改模块提供支持。

3、日志模块

记录程序运行或是调试时的日志,有助于排查程序异常。

4、资源加载模块

主要是对类加载器进行封装,提供了加载类文件以及其他资源文件的功能。

5、解析器模块

主要提供两个功能:一个是对XPath进行封装,为MyBatis初始化解析配置文件和映射文件提供支持;另一个功能是为处理动态SQL语句中的占位符提供支持。

6、数据源模块

MyBatis自身提供了相应的数据源实现,当然也提供了与第三方数据源集成的接口。

7、事务管理

MyBatis自身提供了相应的事务管理接口和简单的实现。在很多场景中,MyBatis会与Spring框架集成,并由Spring框架提供管理事务。

8、缓存模块

MyBatis提供了一级缓存和二级缓存,由于MyBatis提供的缓存是和程序共用JVM内存的,如果缓存数据过大,可能会影响系统中其他功能的运行,所以需要大量缓存是优先考虑使用其他缓存产品。

9、Binding模块

该模块将用户自定义的Mapper接口与映射文件关联起来,系统可以通过调用自定义接口中的方法来完成SQL的执行。

--------------------核心处理层--------------------

1、配置解析

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

2、SQL解析与scripting模块

为MyBatis的动态 SQL提供支持。scripting模块会根据用户传入的实参,解析映射文件中定义的动态SQL节点,并形成数据库可执行的SQL语句。之后会处理SQL语句中的占位符,绑定用户实参。

3、SQL执行

SQL语句的执行涉及多个组件,其中比较重要的是Executor、StatementHandler、ParameterHandler和ResultSetHandler。Executor主要负责维护一级缓存和二级缓存,并提供事务管理的相关操作,他会将数据库相关操作委托给StatementHandler完成。StatementHandler首先通过ParameterHandler完成SQL语句的实参绑定,然后通过java.sql.Statement对象执行SQL语句并得到结果集,最后通过ResultSetHandler完成结果集的映射,得到结果对象并返回。
MyBatis核心流程图

4、插件(略)

--------------------接口层--------------------

1、SqlSession

主要是SqlSession接口,该接口定义了MyBatis提供给应用程序调用的API。

下一篇:MyBatis构架设计学习------MyBatis的XML解析器

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

豢龙先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值