使用mybatis功能前,我们先得创建一个 SqlSessionFactory 对象,创建过程如下。我们实例化了一个 SqlSessionFactoryBuilder对象,然后让其加载mybatis的配置文件,构建出一个SqlSessionFactory 对象。
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
1. 相关组件
介绍SqlSessionFactory 对象的构建过程前,我们先熟悉一下参与这个构建过程的相关组件。以便后面我们更好的分析源码
1.1 Configuration
见名知意,这是 mybaits提供的一个配置类。mybatis所有的配置信息,以及某些配置的默认值都封装在此类中。在构建SqlSessionFactory对象时,mybatis会将传入的xml配置文件的配置信息映射到configuration配置类中。并且,configuration还为我们的别名注册器注册了默认的别名。
public Configuration() {
typeAliasRegistry.registerAlias("JDBC", JdbcTransactionFactory.class);
typeAliasRegistry.registerAlias("MANAGED", ManagedTransactionFactory.class);
typeAliasRegistry.registerAlias("JNDI", JndiDataSourceFactory.class);
typeAliasRegistry.registerAlias("POOLED", PooledDataSourceFactory.class);
typeAliasRegistry.registerAlias("UNPOOLED", UnpooledDataSourceFactory.class);
......
1.2 SqlSessionFactory 和 SqlSessionFactoryBuilder
SqlSessionFactory 是一个构建SqlSession的工厂。SqlSession可以被认为是与数据库一次会话。SqlSessionFactory提供了非常多的重载的 openSession 方法,用来构建SqlSession,以及一个获取配置类getConfiguration方法,用来动态的获取配置信息或更改配置信息。其实现类DefaultSqlSessionFactory内就维护了一个final的Configuration对象。我们通过通常所说的SqlSessionFactory 就是DefaultSqlSessionFactory。
同理,SqlSessionFactoryBuild

本文详细介绍了MyBatis中SqlSessionFactory的构建过程,包括Configuration、SqlSessionFactoryBuilder、XPathParser和XMLConfigBuilder等组件的作用。SqlSessionFactoryBuilder通过XMLConfigBuilder解析XML配置文件,生成Configuration对象,最终构建SqlSessionFactory。解析过程中,对mappers节点的处理涉及到mapperRegistry和MappedStatement的注册。
最低0.47元/天 解锁文章
325

被折叠的 条评论
为什么被折叠?



