读Mybatis框架源码

1、Mybatis一级与二级缓存

一级缓存

流程:

1:第一次执行select完毕会将查到的数据写入SqlSession内的HashMap中缓存起来,key是查询的完成sql语句,里面有参数,不同的参数是不同的key

2:第二次执行select会从缓存中查询数据,如果select相同并且参数一样,那么就能从缓存汇总返回数据,不用去查数据库了,从而提高效率

二级缓存

二级缓存是mapper级别的缓存,当多个SqlSession使用同一个Mapper操作数据库的时候,得到的数据会缓存在同一个缓存区域。
springboot项目中使用的配置
在启动类中加上@EnableCaching注解
在需要缓存的mapper中加上@CacheNamespace(implementation = MybatisRedisCache.class)这个注解和二级缓存的类就可以了
 

2、工厂模式

简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
SqlSession可以认为是一个Mybatis工作的核心的接口,通过这个接口可以执行执行SQL语句、获取Mappers、管理事务。类似于连接MySQL的Connection对象。

img

可以看到,该Factory的openSession方法重载了很多个,分别支持autoCommit、Executor、Transaction等参数的输入,来构建核心的SqlSession对象。

3、代理模式

代理模式(Proxy Pattern) :给某一个对象提供一个代 理,并由代理对象控制对原对象的引用。代理模式的英 文叫做Proxy或Surrogate,它是一种对象结构型模式。

代理模式包含如下角色:

Subject: 抽象主题角色
Proxy: 代理主题角色
RealSubject: 真实主题角色


img

  4、核心模块

在这里插入图片描述

配置解析

对xml进行解析,并转化为对应的对象信息。如mybatis-config.xml解析为配置类Configuration

反射

对于ORM,需要经常对类的属性、对象的成员、方法进行判断赋值。而Mybatis则提供了反射模块来支持ORM的这个特性

 

对象映射/绑定

负责jdbcType与java类之间的转化

语句执行

语句执行包含几个子流程

  1. SQL解析
  2. SQL执行
  3. 返回结果

 

数据源管理

  1. 池化数据源 PooledDataSource
  2. 普通数据源 UnpooledDataSource  

  • 事务管理

  • 插件

    Mybatis支持自定义插件,对流程进行调整干预

  • 日志
    支持不同类型的日志实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值