9.2 深入MyBatis的配置文件 9.2.1 MyBatis的配置文件结构

9.2 深入MyBatis的配置文件

MyBatis的持久化操作离不开SqlSessionFactory对象,这个对象是整个数据库映射关系经过编译后的内存镜像,该对象由SqlSessionFactoryBuilder加载MyBatis的配置文件产生。
SqlSessionFactory对象的openSession()方法可以打开Sqlsession对象。

代码回顾

1
2
3
4
5
// 读取mybatis-config.xml文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml"));
// 读取配置文件,初始化mybatis,创建SqlSessionFactory类的实例
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
sqlSession = sqlSessionFactory.openSession();

上述代码的功能是根据配置文件mybatis-config.xml,创建SqlSessionFactory对象,然后产生Sqlsession,执行SQL语句。

MyBatis的初始化

MyBatis的初始化就发生在第4句:

1
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);

MyBatis初始化基本过程

SqlSessionFactoryBuilder根据传入的输入流生成Configuration对象,然后根据Configuration对象创建默认的SqlSessionFactory实例。

初始化的基本过程如下图所示:
这里有一张图片

MyBatis初始化要经过以下几步:

  1. 调用SqlSessionFactoryBuilder对象的build(inputstream)方法。
  2. SqlSessionFactoryBuilder会根据输入流inputstream等信息创建XMLConfigBuilder对象。
  3. SqlSessionFactoryBuilder调用XMLConfigBuilder对象的parse()方法。
  4. XMLConfigBuilder对象解析XML配置文件返回Configuration对象。
  5. SqlSessionFactoryBuilder根据Configuration对象创建一个DefaultSessionFactory对象。
  6. SqlSessionFactoryBuilder返回DefaultSessionFactory对象给客户端,供客户端使用。

由此可见,SqlsessionFactory是根据MyBatis的配置文件mybatis-config.xml创建的

9.2.1 MyBatis的配置文件结构

MyBatis的配置文件包含了影响MyBatis行为的信息。 文档的结构如下:

  • 顶层configuration配置
  • properties属性
  • settings设置
  • typeAliases类型命名
  • typeHandlers类型处理器
  • objectFactory对象工厂
  • plugins插件
  • environments环境
  • environment环境变量
  • transactionManager事务管理器
  • dataSource数据源
  • databaseIdProvider数据库厂商标识
  • mappers映射器