MyBatis(三)全局配置⽂件之environments环境配置environment环境配置
⼀、environment 环境配置
1、MyBatis 可以配置多种环境,⽐如开发、测试和⽣成环境需要有不同的配置
2、每种环境使⽤⼀个 environment 标签进⾏配置并指定唯⼀标识符
3、可以通过 environment 标签中的 default 属性指定⼀个环境的标识符来快速的切换环境
⼆、environment 属性
1、environment
environments 指定具体环境,mybatis 可以配置多种环境,default 指定使⽤某种环境,可以达到快速切换环境。 environment:配置⼀个具体的环境信息,id属性代表当前环境的唯⼀标识,必须有下⾯两个标签:transactionManager:事务管理器
dataSource:数据源
案例:
<!-- 数据库连接环境的配置 -->
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="urname" value="${jdbc.urname}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
<environment id="oracle">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="urname" value="${jdbc.urname}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
id :指定当前环境的唯⼀标识
transactionManager 和 dataSource 都必须有
2、transactionManager 事务管理器
type 属性取值有:JDBC | MANAGED | ⾃定义
(1)JDBC:使⽤了 JDBC 原⽣的事务管理⽅式,即提交和回滚都需要⼿动处理,依赖于从数据源得到的连接来管
理事务范围。(JdbcTransactionFactory类型)
(2)MANAGED:不提交或回滚⼀个连接、让容器来管理事务的整个⽣命周期(⽐如:JEE应⽤服务器的上下⽂)(ManagedTransactionFactory类型)
(3)⾃定义:实现TransactionFactory接⼝,type指定为全类名
3、dataSource 数据源
type 属性取值有: POOLED | UNPOOLED | JNDI | ⾃定义
(1)POOLED:使⽤连接池,PooledDataSourceFactory(使⽤Mybatis的连接池)
(2)UNPOOLED:不使⽤连接池,UnpooledDataSourceFactory
(3)JNDI:在 EJB 或应⽤服务这类容器中查找指定的数据源(JndiDataSourceFactory)
(4)⾃定义:实现 DataSourceFactory 接⼝,定义数据源的获取⽅式,type是全类名
4、注意:实际开发中我们使⽤ Spring 管理数据源,并进⾏事务控制的配置来覆盖上述配置
扩展:上⾯的事务管理器和数据源都是在 Configuration 类中进⾏配置的。
public Configuration() {
languageRegistry.tDefaultDriverClass(XMLLanguageDriver.class);
}