MyBatis源码全体系流程图

MyBatis源码全体系流程图

MyBatis是一个半自动的ORM持久层框架

主要使用步骤

  • 写mybatis-config.xml和mapper.xml
  • 写mapper.xml对应的mapper接口(可省略)
  • 获取SqlSessionFactory
  • 获取SqlSession
  • 执行getMapper()(没mapper接口可省略)
  • 执行sqlSelect.selectOne()查询数据库(以查询为例)
  • 获取结果

MyBatis在查询数据库时使用了二级缓存机制

  • 二级缓存:在一个Session会话内有效
  • 一级缓存:整个程序运行期间都有效,和Configuration的生命周期相同

MyBatis的Configuration

  • 类似于Java中的DefaultLisableBeanFactory中的BeanDefinitions,主要作用就是存储解析出的配置文件,供后续程序运行时使用。

MyBatis几个重要接口和抽象类

  • BaseBuilder:主要作用加载配置文件,针对配置文件的不同类型有不同的实现在这里插入图片描述
/**
 * @author Clinton Begin
 * @author Kazuki Shimizu
 * 负责加载mybatis-config.xml文件
 */
public class XMLConfigBuilder extends BaseBuilder

/**
 * @author Clinton Begin
 * SQL语句参数解析的解析构建器
 */
public class SqlSourceBuilder extends BaseBuilder

/**
 * @author Clinton Begin
 * @author Kazuki Shimizu
 * 解析mapper.xml的解析构建器
 */
public class XMLMapperBuilder extends BaseBuilder

/**
 * @author Clinton Begin
 * 动态SQL解析构建器
 */
public class XMLScriptBuilder extends BaseBuilder

/**
 * @author Clinton Begin
 * SQL语句块的解析构建器(<select> <insert> <update> <delete>标签的解析)
 */
public class XMLStatementBuilder extends BaseBuilder
  • Executor:SQL语句的执行器,主要分为以下几种
 * 1)CachingExecutor:如果使用<setting>开启了二级缓存的话会使用
 *  封装了普通的Executor,会先查询缓存中是否存在结果,如果存在就使用缓存中结果,如果不存在就使用Executor进行查询,再将结果放入缓存
 * 2)Executor
 *  a) SimpleExecutor:每执行一个update或select,就开启一个Statement对象,用完立刻关闭Statement对象
 *  b) ReuseExecutor:执行update或select,以sql作为key查找Statement对象,存在就使用,不存在就创建,用完后,不关闭Statement对象
 *    而是放在Map<String,Statement>内,供下一次使用
 *  c) BatchExecutor:执行update,将所有sql都添加到批处理中(addBatch()),等待统一执行(executeBatch()),它缓存了多个Statement对象
 *    每个Statement对象都是addBatch()完毕后,等待逐一执行executeBatch()批处理。与JDBC批处理相同

MyBatis源码全体系流程图

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值