其他分享
首页 > 其他分享> > Mybatis 基础篇(二)-- 深入了解 XML 配置(environments)

Mybatis 基础篇(二)-- 深入了解 XML 配置(environments)

作者:互联网

原文链接:Mybatis 基础篇(二)-- 深入了解 XML 配置(environments)

environments(环境配置)

Mybatis 支持配置多环境,但是请记住每个 SqlSessionFactory 实例只能选择一种环境。如果需要使用到多个环境,则需要多个 SqlSessionFactory 实例。

SqlSessionFactory 在 SqlSessionFactoryBuilder 创建的时候指定所对应的环境。

SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment, properties);

如果忽略了环境参数,那么将会加载默认环境,如下所示:

SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, properties);

environments 元素定义了如何配置环境。

<environments default="test" >
    <environment id="test">
        <transactionManager type="JDBC">
            <property name="" value="" />
        </transactionManager>
        <dataSource type="UNPOOLED">
            <property name="driver" value="org.hsqldb.jdbcDriver" />
            <property name="url" value="jdbc:hsqldb:mem:mybatis-test" />
            <property name="username" value="sa" />
            <property name="password" value="" />
            <property name="defaultTransactionIsolationLevel" value=""/>
        </dataSource>
    </environment>
</environments>

注意一些关键点:

默认环境和环境 ID 顾名思义。 环境可以随意命名,但务必保证默认的环境 ID 要匹配其中一个环境 ID。

事务管理器(transactionManager)

内置事务管理器类型(type="JDBC | MANAGED")

这两种事务管理器类型都不需要设置任何属性。

分析类 Configuration 的源码

public Configuration() {
	typeAliasRegistry.registerAlias("JDBC", JdbcTransactionFactory.class);
	typeAliasRegistry.registerAlias("MANAGED", ManagedTransactionFactory.class);
	// 省略其他代码
}  

可以看出:

所以下述配置是等价的

<transactionManager type="JDBC">
	等价于
<transactionManager type="org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory">

自定义事务管理类型

通过实现接口 org.apache.ibatis.transaction.TransactionFactoryorg.apache.ibatis.transaction. Transaction实现mybatis的自定义事务管理。type 指定为TransactionFactory 实现类的全名或别名。

数据源(dataSource)

dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。

内置数据源类型(type="UNPOOLED | POOLED | JNDI")

分析类 Configuration 的源码

public Configuration() {
	// 省略其他代码
	typeAliasRegistry.registerAlias("JNDI", JndiDataSourceFactory.class);
	typeAliasRegistry.registerAlias("POOLED", PooledDataSourceFactory.class);
	typeAliasRegistry.registerAlias("UNPOOLED", UnpooledDataSourceFactory.class);
}  

可以看出:

所以下述配置是等价的

<dataSource type="UNPOOLED">
	等价于
<dataSource type="org.apache.ibatis.datasource.unpooled.UnpooledDataSourceFactory">

UNPOOLED 配置属性(property标签)

更多配置:可查看类 org.apache.ibatis.datasource.unpooled.UnpooledDataSource

POOLED 配置属性(property标签)

除了上述提到 UNPOOLED 下的属性外,还有更多属性用来配置 POOLED 的数据源:

更多配置:可查看类 org.apache.ibatis.datasource.pooled.PooledDataSource

JNDI 配置属性(property 标签)

自定义数据源类型

通过实现接口 org.apache.ibatis.datasource.DataSourceFactory实现mybatis的自定义数据源。type 指定为DataSourceFactory 实现类的全名或别名。

参考资料

Mybatis 官网 XML 配置

公众号

喜欢我的文章,请关注公众号

IBIT程序猿

标签:XML,JDBC,数据源,配置,environments,SqlSessionFactory,Mybatis,连接,属性
来源: https://www.cnblogs.com/javaDeveloper/p/13167109.html