Mybatis原理剖析之架构分析(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liuzhixiong_521/article/details/84984292

概述

何为ORM

ORM,全称为Object Relational Mapping,是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。

ORM包含两方面内容,一是对象->关系映射,二是关系->对象映射,两者合二为一才称之为一个完整的ORM。如上所说的关系,通俗来讲就是数据库中的表。

Mybatis之于ORM

Hibernate是一个完整的ORM框架,既可以实现对象->关系映射,也可以实现关系->对象映射,我们此处不再详述。

而Mybatis并不是一个完整的ORM框架,而是一个半ORM框架,它只能实现关系->对象映射。那Mybatis如何实现关系->对象映射的呢,通俗来讲,我们只需要编写相应的sql语句,并定义"获取的表字段与对象的成员变量之间的映射关系",即可实现关系->对象映射,具体我们在后续文章中详述。

Mybatis旨在更简单更方便地完成数据库操作,减轻开发人员的工作量,相比Hibernate的使用痛苦,使用MyBatis会更加简捷轻松。

架构

功能流程架构

在这里插入图片描述

源码包架构

在这里插入图片描述

接口层

  • 接口层主要对外提供增删改查功能以及动态更改配置等功能。
  • 接口层主要涉及三个类SqlSessionFactory和SqlSession,这三个类都在session包下。
  • 望文生义便知SqlSessionFactory为SqlSession的工厂类,并不包含其他含义。
  • SqlSession类是实现所有数据库操作的API,但是并不是由开发者直接调用,这个在后边的文章中会详细叙述。
  • Configuration是Mybatis中一个非常重要的类,mybatis-config.xml和mapper.xml所有参数都会解析到一个Configuration对象中,而这个Configuration对象是全局唯一的。SqlSessionFactory和SqlSession均持有这个Configuration对象,一切的操作都以Configuration包含的参数展开。

核心层

Mybatis包含两类核心配置文件mybatis-config.xml和mapper.xml,而整个核心层的入口则是这两个配置文件。

核心层主要包括以下几部分功能。

配置解析

配置解析的功能主要是针对mybatis-config.xml和mapper.xml这两类配置文件,采用DOM方式解析并映射到内存中的Configuration对象。主要包括sql语句、映射关系、插件配置、事物配置等等,具体的配置参数我们会在后边的文章中详述。

参数处理

参数处理部分主要包括单个参数,多个参数,命名参数,POJO参数,Map容器,DTD传递等处理方法。涉及类主要包括SqlCommand、MethodSignature、ParamNameResolver等。

SQL执行

Mybatis的SQL执行部分相对比较重要,通过执行器来执行SQL命令,核心类为Executor接口,执行器主要分为SimpleExecutor、BatchExecutor、ReuseExecutor等三种执行器。

结果映射

结果映射的功能是将数据库返回的结果映射为Java对象,即ORM。Mybatis的结果映射主要包括三部分,分别为一对一映射,一对多映射,多对一映射。

基础层

基础层是整个Mybatis框架的支撑部分,主要包括日志框架封装、IO操作、反射封装、异常处理、缓存处理、连接池、事物等。

温馨提示

  • 如果您对本文有疑问,请在评论部分留言,我会在最短时间回复。
  • 如果本文帮助了您,也请评论,作为对我的一份鼓励。
  • 如果您感觉我写的有问题,也请批评指正,我会尽量修改。

猜你喜欢

转载自blog.csdn.net/liuzhixiong_521/article/details/84984292
今日推荐