修订时间:2018年9月1日

我们知道MyBatis的持久化操作离不开SqlSessionFactory对象,该对象由SqlSessionFactoryBuilde加载MyBatis的配置文件产生。SqlSessionFactory对象的openSession方法可以打开SqlSession对象。具体代码如下所示:

// 读取mybatis-config.xml 文件
Inputstream inputStream= Resources.getResourceAsStream("mybatis-config.xml");
// 初始化mybatis
// 创建SqlSessionFactory 类的实例
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 创建Session 实例
SqlSession session= sqlSessionFactory.openSession();

上述代码的功能是根据配置文件mybatis-config.xml,创建SqlSessionFactory 对象,然后产生SqlSession,执行SQL语句。而MyBatis的初始化就发生在第三句:

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

现在就让我们看看第三句到底发生了什么。

MyBatis初始化基本过程:

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

初始化的基本过程如下图所示:

session-init

由上图所示,我们可以得知MyBatis初始化要经过以下几步:
(1)调用SqlSessionFactoryBuiler对象的build(inputStream)方法。
(2)SqlSessionFactoryBuilder会根据输入流inputStream等信息创建XMLConfigBuilder对象。
(3)SqlSessionFactoryBuilder调用XMLConfigBuilder对象的parse()方法。
(4)XMLConfgBuilder对象解析XML配置文件返回Configuration对象。
(5)SqlSessionFactoryBuilder根据Configuration对象创建一个DefaultSessionFactory对象,供客户端使用。
(6)SqlSessionFactoryBuilder返回DefaultSessionFactory对象给客户端,由此可见,SqlSessionFactory是根据MyBatis的配置文件mybatis-config.xml创建的。

mybatis.jpg

标签: none

仅有一条评论

  1. tan90° tan90°

    我可以利用空余时间帮忙做这个网站的开发吗?

添加新评论