mybatis学习_SqlSessionFactory构建过程

本文详细介绍了MyBatis中SqlSessionFactory的构建过程,包括Configuration、SqlSessionFactoryBuilder、XPathParser和XMLConfigBuilder等组件的作用。SqlSessionFactoryBuilder通过XMLConfigBuilder解析XML配置文件,生成Configuration对象,最终构建SqlSessionFactory。解析过程中,对mappers节点的处理涉及到mapperRegistry和MappedStatement的注册。
摘要由CSDN通过智能技术生成

使用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值