乐趣区

关于java:MyBatisMyBatis工作流程

1. MyBatis 工作流程

1.1 简略流程

  1. 创立 SqlSessionFactoryBuilder 对象,调用 build(inputstream)办法读取并解析配置文件 mybatis-config.xml,返回SqlSessionFactory 对象。
  2. SqlSessionFactory 创立SqlSession 对象,没有手动设置的话事务默认开启。
  3. SqlSession实例取得 Mapper 对象 并运行 Mapper 映射的 SQL 语句,实现对数据库的 CRUD 和事务 提交

阐明:SqlSession 是单线程对象,因为它是非线程平安的,是长久化操作的独享对象,相似 jdbc 中的 Connection,底层就封装了 jdbc 连贯。

1.2 具体流程

具体流程如下:

  1. 加载 mybatis 全局配置文件(数据源、mapper 映射文件等),解析配置文件,MyBatis 基于 XML 配置文件生成Configuration,和一个个MappedStatement(包含了参数映射配置、动静 SQL 语句、后果映射配置),其对应着 <select | update | delete | insert> 标签项。
  2. SqlSessionFactoryBuilder通过 Configuration 对象生成SqlSessionFactory,用来开启SqlSession
  3. SqlSession对象实现和数据库的交互:
  • a)用户程序调用 mybatis 接口层 api(即 Mapper 接口中的办法)
  • b)SqlSession 通过调用 api 的 Statement ID 找到对应的 MappedStatement 对象
  • c)通过 Executor(负责动静 SQL 的生成和查问缓存的保护)将MappedStatement 对象进行解析,sql 参数转化、动静 sql 拼接,生成 jdbc Statement 对象
  • d)JDBC 执行 sql。
  • e)借助 MappedStatement 中的后果映射关系,将返回后果转化成 HashMap、JavaBean 等存储构造并返回。
退出移动版