MyBatis连接信息配置详解

MyBatis连接信息配置详解

1.配置详解

<environments default="mysql">
    <environment id="mysql">
        
        <transactionManager type="JDBC">transactionManager>
        
        <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">
    
    <environment id="aaa">
       ...
    environment>
    
    
    <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.itheima.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.itheima.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中配置对应的连接池即可

你可能感兴趣的:(MyBatis)