1、mybatis源码结构解析

1、概述

在这里插入图片描述

我们下载源码之后就会看到mybatis的项目结构图,其实看上去是一脸懵逼的。到底怎么去看它比较合适?

首先要搞搞懂mybatis是干嘛的?不能瞎j8看这些包。
mybatis的作用其实就是对JDBC的封装,简化了JDBC的一些操作。

回顾一下JDBC的编码过程
首先会去加载xml中配置的信息,连接数据库
然后拿到statment对sql进行查询。
查询完会接受数据库返回的结构集。
最后对结果返回给调用者。

mybatis的作用就是对JDBC进行的封装,流程如下:

在这里插入图片描述

2、分层设计

有了这个知识储备我们就可以对mybatis的执行进行剖析,
mybatis大体分为三层

  1. 接口层
  2. 核心层
  3. 基础支撑层
    在这里插入图片描述

接口层就是去加载xml配置文件,进行配置文件的解析,形成一个session。主要是为了解决JDBC重复去拿配置文件去创建session的开销。从而衍生出了一个公用的sqlSession。
当一个执行访问数据库就会在sqlsession中去调用executor进行全部sql的访问控制。
每一个sql会先去Executor进行报道,Executor会根据sql是哪种类型(增删改差)分配一个Handler进行处理。
处理完之后就通过底层的JDBC去执行sql,从而拿到结构集,然后对结构进行处理,统一返回给调用者。
核心层调用过程中肯定少不了一些基础组件的功能,如事物,缓存等。这些统统都放在了基础支持层。

3、包的结构

有了前面知识的总结,再看mybatis的包的功能。
Mybatis的包的作用如下:

parsing:解析xml以及properties文件 io:读取mybatis的配置文件
datasource:mybatis自己实现的数据库连接池
builder:根据sqlmapConfig.xml,sqlmap.xml,初始化SQL执行环境,如实例化Configuration、参数对象、结果集对象等,包含注解与xml两种实现
binding:通过类名+方法名的形式去找到对应的SqlSession方法实现
session:SQL语句执行的入口,主要创建session相关的实现
type:初始化sqlmapConfig.xml的别名注册,以及类型处理注册
plugin:拦截器相关类,要对SQL特殊处理就可以实现该包中的Interceptor,如分页查询
executor:sql执行的核心,获取配置文件的,实现可以执行的sql,最终处理结果集,这些过程都在executor中实现
cache:各种缓存实现 mapping:sqlmapConfig.xml,sqlmap.xml中的标签映射类

4、总结

首先mybatis是对JDBC的封装,看源码的时候看主流程就可以了。
myabtis把结构大体分为三层:
1、接口层
2、核心层
3、基础层

包的作用可以看上面的第三点
下面是对mybatis包的一个结构图,盗用一张网上的图。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值