<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- mybatis 核心配置 -->
<configuration>
<!-- 配置初始化环境(连接) -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 使用mybatis自带连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql:///jtsys" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="Mapper.xml" />
</mappers>
</configuration>
//这是几个核心配置
<configuration>
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<mapper resource="Mapper.xml"/>
</configuration>
小结 mybatis-configs.xm 配置信息封装在一个Configuration类 而这个类有一个属性 protected Environment environment
public class Configuration {
protected Environment environment;
...
}
Environment 类封装了**environments default=“development”**配置文件里的
public final class Environment {
private final String id;
private final TransactionFactory transactionFactory;
private final DataSource dataSource;
}
... get/set方法 构造函数
public interface TransactionFactory {
//设置事务工厂自定义属性
void setProperties(Properties props);
/**
*从现有连接创建{@link事务}。
* @param conn现有数据库连接
* @return事务
* @since 3.1.0
* /
Transaction newTransaction(Connection conn);
/ * *
*从数据源创建一个{@link事务}。
* @param dataSource获取连接
* @param级别所需的隔离级别
* @param自动提交所需的自动提交
* @return事务
* @since 3.1.0
* /
Transaction newTransaction(DataSource dataSource, TransactionIsolationLevel level, boolean autoCommit);
}
public interface DataSource extends CommonDataSource, Wrapper {
//<p>尝试建立与该数据源的连接
//这个{@code DataSource}对象表示。
// @返回到数据源的连接
//@exception SQLException如果发生数据库访问错误
//@throws java.sql。当驱动程序确定
//由{@code setLoginTimeout}方法指定的超时值
//已被超过,并且至少试图取消
Connection getConnection() throws SQLException;
//<p>尝试建立与该数据源的连接
//这个{@code DataSource}对象表示。
//@param用户名连接所在的数据库用户
//@param密码用户的密码
//@返回到数据源的连接
//@exception SQLException如果发生数据库访问错误
//@throws java.sql。当驱动程序确定
//由{@code setLoginTimeout}方法指定的超时值
//已被超过,并且至少试图取消
//当前数据库连接尝试
Connection getConnection(String username, String password)
throws SQLException;
}