标签:bcd wait 因此 read query 多环境 ons jdb bit
原文链接:Mybatis 基础篇(二)-- 深入了解 XML 配置(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。
这两种事务管理器类型都不需要设置任何属性。
分析类 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.TransactionFactory
和 org.apache.ibatis.transaction. Transaction
实现mybatis的自定义事务管理。type 指定为TransactionFactory 实现类的全名或别名。
dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。
分析类 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">
driver:这是 JDBC 驱动的 Java 类全限定名(并不是 JDBC 驱动中可能包含的数据源类)。
url:这是数据库的 JDBC URL 地址。
username:登录数据库的用户名。
password:登录数据库的密码。
defaultTransactionIsolationLevel:默认的连接事务隔离级别。
defaultNetworkTimeout:等待数据库操作完成的默认网络超时时间(单位:毫秒)。
driver.*:通过添加前缀"driver." 给数据库驱动传递属性
eg:
driver.encoding=UTF8
这将通过 DriverManager.getConnection(url, driverProperties) 方法传递值为 UTF8 的 encoding 属性给数据库驱动。
更多配置:可查看类 org.apache.ibatis.datasource.unpooled.UnpooledDataSource
。
除了上述提到 UNPOOLED 下的属性外,还有更多属性用来配置 POOLED 的数据源:
更多配置:可查看类 org.apache.ibatis.datasource.pooled.PooledDataSource
。
通过实现接口 org.apache.ibatis.datasource.DataSourceFactory
实现mybatis的自定义数据源。type 指定为DataSourceFactory 实现类的全名或别名。
喜欢我的文章,请关注公众号
Mybatis 基础篇(二)-- 深入了解 XML 配置(environments)
标签:bcd wait 因此 read query 多环境 ons jdb bit
原文地址:https://www.cnblogs.com/javaDeveloper/p/13167109.html