MyBatis运行原理

运行过程中涉及到的类

  • ResourcesMyBatis 中 IO 流的工具类
    • 加载配置文件
  • SqlSessionFactoryBuilder() 构建器
    • 作用:创建 SqlSessionFactory 接口的实现类
  • XMLConfigBuilder MyBatis 全局配置文件内容构建器类
    • 作用负责读取流内容并转换为 JAVA 代码.
  • Configuration 封装了全局配置文件所有配置信息.
    • 全局配置文件内容存放在 Configuration 中
  • DefaultSqlSessionFactory
    • 是SqlSessionFactory接口的实现类
  • Transaction 事务类
    • 每一个 SqlSession 会带有一个 Transaction 对象.
  • TransactionFactory 事务工厂
    • 负责生产 Transaction
  • Executor MyBatis 执行器
    • 作用:负责执行 SQL 命令
    • 相当于 JDBC 中 statement 对象(或 PreparedStatement或 CallableStatement)
    • 默认的执行器 SimpleExcutor
    • 批量操作 BatchExcutor
    • 通过 openSession(参数控制)
  • DefaultSqlSession 是 SqlSession 接口的实现类
  • ExceptionFactoryMyBatis 中异常工厂

在 MyBatis 运行开始时需要先通过 Resources 加载全局配置文件.下面需要实例化 SqlSessionFactoryBuilder 构建器.帮助 SqlSessionFactory 接口实现类 DefaultSqlSessionFactory.

在实例化 DefaultSqlSessionFactory 之前需要先创建 XmlConfigBuilder解析全局配置文件流,并把解析结果存放在 Configuration 中.之后把Configuratin 传递给 DefaultSqlSessionFactory.到此 SqlSessionFactory 工厂创建成功.

由 SqlSessionFactory 工厂创建 SqlSession.每次创建 SqlSession 时,都需要由 TransactionFactory 创建 Transaction对象,同时还需要创建 SqlSession 的执行器 Excutor,最后实例化DefaultSqlSession,传递给 SqlSession 接口.

根据项目需求使用 SqlSession 接口中的 API 完成具体的事务操作.如果事务执行失败,需要进行 rollback 回滚事务.如果事务执行成功提交给数据库.关闭 SqlSession