Mybatis源码解析之SqlSessionFactoryBuilder的SessionFactory构建器

蓝色妖姬 2024-05-13 ⋅ 25 阅读

在Mybatis中,SqlSessionFactory是一个单例的对象,用于创建SqlSession,SqlSession是一个会话对象,用于和数据库进行交互。在Mybatis的源码中,SqlSessionFactoryBuilder是用来创建SqlSessionFactory的构建器,通过它来构建SqlSessionFactory对象。

SqlSessionFactoryBuilder的作用

SqlSessionFactoryBuilder的作用是通过配置文件或者Java代码的方式来构建SqlSessionFactory实例,从而创建SqlSession,并且对SqlSessionFactory的配置进行验证和设置。

SqlSessionFactory的创建过程

  1. 加载配置文件或者通过Java代码进行配置。
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
  1. 解析配置文件,将各种配置信息解析成相应的对象,比如数据源、mapper文件等。

  2. 根据解析后的配置信息,创建SqlSessionFactory对象。

SqlSessionFactoryBuilder的源码解析

SqlSessionFactoryBuilder类的主要方法是build()方法,通过build()方法来创建SqlSessionFactory对象。在build()方法中会经过一系列的操作,包括解析配置、创建Configuration对象、初始化DefaultSqlSession的等操作。

public SqlSessionFactory build(InputStream inputStream) {
    // 解析配置信息
    XMLConfigBuilder parser = new XMLConfigBuilder(inputStream);
    Configuration configuration = parser.parse();
    
    // 创建SqlSessionFactory的实例
    return build(configuration);
}

在build()方法中,会先通过XMLConfigBuilder来解析配置信息,然后将配置信息传入到build(Configuration configuration)方法中,再通过Configuration对象来创建SqlSessionFactory实例。

总结

通过对SqlSessionFactoryBuilder的源码解析,我们了解了SqlSessionFactory的创建过程,以及SqlSessionFactoryBuilder在其中的作用。SqlSessionFactoryBuilder是Mybatis中的一个重要构建器,通过它可以方便的创建SqlSessionFactory实例,从而构建SqlSession对象进行数据库操作。在实际使用中,我们可以根据自己的需求来配置SqlSessionFactoryBuilder,以满足不同的需求。


全部评论: 0

    我有话说: