MyBatis连接信息配置详解
1.配置详解
<environments default="mysql">
<environment id="mysql">
<!--事务管理:JDBC支持事务管理,MANAGED默认关闭事务-->
<transactionManager type="JDBC"></transactionManager>
<!--连接池:
POOLED:使用连接池(mybatis自己内置的有连接池,默认使用内置连接池。)
UNPOOLED:不使用连接池。
JNDI: 我不用连接池。你自己配置(在Tomcat中配置)。
-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
1.1 environments标签
该标签中可以包含多段连接池信息, 每段配置以environment标签包括, default表示默认以哪段配置为准.
如: default="aaa"
表示, 默认以id为"aaa"那段连接池配置位置
<environments default="aaa">
<!-- 第一段配置, id为aaa -->
<environment id="aaa">
...
</environment>
<!-- 第二段配置, id为bbb -->
<environment id="bbb">
<!-- ... -->
</environment>
</environments>
1.2 environment标签
该标签中记录该段配置的详细信息, 包含:
属性: id,该段配置的唯一标识
子标签:
transactionManager事务类型
dataSource连接池类型
<environment id="mysql">
<!--事务管理类型-->
<transactionManager type="JDBC"></transactionManager>
<!--连接池类型 -->
<dataSource type="POOLED">
...
</dataSource>
</environment>
1.2.1 transactionManager标签
用来配置事务类型, 取值有两个:
JDBC: 支持事务管理
MANAGED: 默认关闭事务
一般都选择JDBC
<transactionManager type="JDBC"></transactionManager>
1.2.2 dataSource标签
用来配置连接池类型, 取值有三个:
UNPOOLED:不使用连接池。
POOLED:使用连接池, 但使用的是MyBatis自带连接池.
JNDI:使用如 EJB 或应用服务器这类容器中的连接池
一般选择POOLED
<dataSource type="POOLED">
...
</dataSource>
2.扩展连接池
对于dataSource连接池的配置. Mybatis允许用户使用第三方连接池.
以Druid连接池为例, 演示使用第三方连接池
2.1 自定义连接池类
创建一个类, 并实现org.apache.ibatis.datasource.DataSourceFactory接口.
package com.test.dataSource;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import org.apache.ibatis.datasource.DataSourceFactory;
import javax.sql.DataSource;
import java.util.Properties;
/**
* 自定义连接池类
*/
public class MyDruidDataSourceType implements DataSourceFactory {
private Properties props;
@Override
public void setProperties(Properties props) {
this.props = props;
}
@Override
public DataSource getDataSource() {
DataSource dataSource = null;
try {
//根据传入进来的Properties数据, 创建Druid连接池
dataSource = DruidDataSourceFactory.createDataSource(props);
} catch (Exception e) {
e.printStackTrace();
}
return dataSource;
}
}
2.2 配置自定义的连接池
<!--数据库联接信息-->
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="com.shuai.dataSource.MyDruidDataSourceType">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="dbc:mysql://localhost:3306/ssm_mybatis"/>
<property name="username" value="root"/>
<property name="password" value="123"/>
</dataSource>
</environment>
</environments>
2.3 注意
虽然扩展连接池也不算很复杂, 但我们一般不使用, 因为在Spring整合了MyBatis之后, 连接池全部由Spring来管理了,如果仍然想更换连接池, 直接在spring中配置对应的连接池即可