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等存储构造并返回。