MyBatis开发流程源码解析(一)

1 .jdbc基本流程

mybatis是基于jdbc进行封装的,所以我们要先熟悉jdbc基本流程
MyBatis开发流程源码解析(一)_第1张图片

2 .MyBatis开发流程

2.1MyBatis基本调用流程

MyBatis开发流程源码解析(一)_第2张图片

2.2 核心配置文件MyBatis-config.xml

MyBatis开发流程源码解析(一)_第3张图片

2.3 SQL映射文件

MyBatis开发流程源码解析(一)_第4张图片

3 .MyBatis开发流程源码解析

3.1读取MyBatis核心配置文件流

3.2.通过SqlSessionFactoryBuilder.build(is) 构建SqlSessionFactory

1.首先创建一个xml解析对象XMLConfigBuilder
2. 通过XMLConfigBuilder.parse()将文件流转换成Configuration 对象
3. 接着SqlSessionFactoryBuilder.build(Configuration config) 方法创建DefaultSqlSessionFactory 返回

MyBatis开发流程源码解析(一)_第5张图片

MyBatis开发流程源码解析(一)_第6张图片

在这里插入图片描述

3.3.使用SqlSessionFactory 创建sqlsession

  1. DefaultSqlSessionFactory .openSessionFromDataSource(…)
  2. 先获取配置文件的运行环境 即核心配置 标签
  3. 接着获取事务工厂 TransactionFactory ,然后根据DataSource 创建一个新的事务,即 标签
  4. 创建一个执行器对象Executor对象,包含事务,执行器类型,提交方式
  5. 创建一个DefaultSqlSession 包含配置信息,执行器

MyBatis开发流程源码解析(一)_第7张图片

3.4.使用SqlSession进行插入操作

  1. dirty属性
  2. configuration.getMappedStatement(statement) 通过配置文件获取对应的sql语句
  3. executor.update(ms, wrapCollection(parameter)); 使用上面传递的执行器进行操作 SimpleExecutor
  4. SimpleExecutor.doUpdate(…) 创建一个StatementHandler对象,然后创建一个 prepareStatement 执行sql语句 (此处终于发现jdbc的操作)

MyBatis开发流程源码解析(一)_第8张图片

3.5.SqlSession提交事务

  1. 根据此时dirty属性决定提交和回滚
  2. dirty:true sql语句执行完毕后 可以事务提交 false sql语句执行发送错误 事务进行回滚

MyBatis开发流程源码解析(一)_第9张图片

3.6SqlSession.close(); 关闭

你可能感兴趣的:(MyBatis)