MyBatis架构及其运行流程

0x00:MyBatis 架构组成

MyBatis 整体的架构组成为:数据源配置文件、SQL 映射配置文件、会话工厂、会话、执行器以及底层封装对象组成。

0x01:数据源配置文件

对于持久层框架,连接数据库是最重要的一步。MyBatis 框架对于数据库连接的配置信息采用了数据库连接池的形式。数据库连接池负责分配、管理、和释放数据库连接,其只使用一个连接,提高了操作性能。不像 JDBC,每次对数据库操作,都需要连接然后释放,这也是 MyBatis 相对 JDBC 其中的一个优点。

程序本身就不用再关心数据库的配置信息,交给 MyBatis 配置文件管理即可。文件名为 SqlMapConfig.xml。其中配置了数据库驱动、数据库连接地址、数据库用户名和密码、事务管理等参数。例如以下示例:

             

连接池中的 org.git.mm.mysql.Driver 是 com.mysql.jdbc.Driver 的之类,也是 Mysql 数据库的连接驱动,如果项目中有整合 SpringMVC 框架时,则连接池可配在 SpringMVC 的配置文件中。

0x02:SQL 映射配置文件

在 JDBC 中,sql 语句一般会写在 java 文件中,而 MyBatis 会将这些 sql 语句单独放在配置文件中 Mapper.xml。

作用流程:MyBatis 会根据配置文件中的参数配置,将组装了参数的 Java 对象或 Map 对象中的相关字段与 Mapper.xml 中的参数配置做匹配,将相关参数绑定到需要执行的 sql 语句上。其 Mapper.xml 配置文件,完成了对 sql 语句的映射配置。例如以下示例:

 

其中,id 是 sql 语句要绑定的字段名,parameterType 是绑定字段的类型,resultType 是把结果映射为一个 Java 对象。

Mapper.xml 文件一般配置在 SqlMapConfig.xml 中,示例代码如下:

  

0x03:会话工厂与会话

当数据库连接池配置文件 SqlMapConfig.xml 和 sql 映射配置文件 Mapper.xml 都准备好后,就需要相关的程序来读取并加载这些配置文件的信息,MyBatis 用来处理这些配置文件的核心对象就是会话工厂与会话。

MyBatis 中,会话工厂是 SqlSessionFactory 类。SqlSessionFactory 会根据数据库配置信息产生可以连接数据库并与其交互的 SqlSession 会话实例类。而 SqlSession 实例类,便会依照 Mapper 配置文件中的 sql 配置,对数据库执行增删改查的操作。

0x04:执行器和底层封装对象

SqlSession 类内部是通过执行器 Executor 对数据库进行操作的,执行器 Executor 与数据库交互,依靠的是底层封装对象 Mappered Statement,这个底层对象 Mappered Statement 封装了从 Mapper 文件读取信息的功能,读取的内容包括 sql 语句、输入参数、输出结果类型等。

0x05:MyBatis 运行流程

MyBatis 的运行流程其实就是其架构的处理流程,总结下如下:

首先,SqlSessionFactory 会话工厂会加载 SqlMapConfig.xml 配置文件信息,然后生成一个可以与数据库交互的会话实例类 SqlSession,会话实例类 SqlSession 会根据 Mapper 配置文件中的 sql 配置,去执行相应的增删改查操作。这样,MyBatis 就实现了与数据库的交互功能。

MyBatis 运行流程结构图如下:

MyBatis架构及其运行流程

当了解了 MyBatis 运行流程后,会更好更容易的去学习这个框架。


分享到:


相關文章: