MyBatis运行原理
为了更加深入和清晰地掌握MyBatis,我们来深入了解MyBatis的运行原理,如图所示。
从上图可以看出,MyBatis框架在操作数据库时大致经过了10个步骤;具体如下:
- 读取 MyBatis 全局配置文件 mybatis-config.xml。该文件中存有MyBatis的运行信息以及数据库连接信息。
- 加载mybatis-config.xml中配置的映射文件mapper.xml。映射文件需要在mybatis-config.xml中配置才能得以被加载。
- 利用从mybatis-config.xml中读取到的信息创建Configuration对象。通俗地说,Configuration对象存储了mybatis-config.xml中的所有配置信息。在初始化Configuration对象的时候还会创建MappedStatement对象。映射文件中的每一个<select/>、<insert/>、<update/>、<delete/>标签都对应一个MappedStatement对象。而且,这些标签的id即是MappedStatement的id。
- 通过MyBatis配置信息构建会话工厂SqISessionFactory。
- 由SqlSessionFactory创建SqlSession对象。
- 创建执行器Executor。SqlSession内部通过执行器Executor操作数据库。在Executor的执行过程中需要MappedStatement类型的参数。除此以外,Executor还负责维护查询缓存。
- 通过 MappedStatement将接口文件中的输入参数映射到映射文件的SQL语句中,输入参数的类型可以为Java基本数据类型、POJO、集合等。此处对输入参数的映射过程类似于JDBC编程中对preparedStatement对象设置参数的过程。在完成输入参数映射后,Executor执行数据库操作。
- 数据库执行SQL语句
- 数据库返回SQL执行结果
- 通过MappedStatement将执行结果映射成Java基本数据类型、POJO、集合等。此处对执行结果的映射类似于JDBC编程中对数据的解析处理过程。