Mybatis配置文件: enviroments运行环境自行理解

<configuration>
  <!--mybatis其他配置-->
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <!-- 配置数据源 -->
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/sqls?characterEncoding=utf8"/>
        <property name="username" value="root"/>
        <property name="password" value="admin"/>
      </dataSource>
    </environment>
  </environments>
 <!--mybatis其他配置-->
</configuration>

在mybatis的根配置文件中,有一个environments标签。其作用是配置mybatis的环境,mybatis中运行配置多个环境。这样做的好处在于,能把多个环境拆分。例如,一个项目中测试团队与开发团队所用的环境可能不一样,此时就可以配置两个环境,并设置environments中的default属性指定自己团队所使用的数据库。

<environments default="development">
    <environment id="test">
      <transactionManager type="JDBC"/>
      <!-- 配置测试所使用的数据源 -->
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/test?characterEncoding=utf8"/>
        <property name="username" value="root"/>
        <property name="password" value="admin"/>
      </dataSource>
    </environment>

    <environment id="development">
      <transactionManager type="JDBC"/>
      <!-- 配置开发所使用的数据源 -->
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/sqls?characterEncoding=utf8"/>
        <property name="username" value="root"/>
        <property name="password" value="admin"/>
      </dataSource>
    </environment>
  </environments>

接下来解读environments标签。
environments中可以有多个environment,每个environmentid属性作为唯一标识。通过environmentsdefault属性指定当前数据库运行环境。
environment标签中必须得有transactionManagerdataSource两个子标签。
transactionManager指定事物管理,mybatis中可以指定JDBC 和 MANAGED两个默认的管理器。如果指定为JDBC,则mybatis将采用JDBC的事物管理方式来进行事物管理。如果指定为MANAGED,mybatis则采用J2EE容器的方式控制事物。
在mybaits中也可以自定义事物管理器。如果需要自定义事物管理,则自定义事物管理器类需要实现TransactionFactory接口。然后type属性值指定为自定义事物管理器的全类名。
从源代码中可以看出,mybatis默认的两个事物管理值实际上是两个别名,JDBC事物管理器的全名为:JdbcTransactionFactory,MANAGED的全类名则为: ManagedTransactionFactory 源代码中查看如下:

public Configuration() {
    //....
    typeAliasRegistry.registerAlias("JDBC", JdbcTransactionFactory.class);
    typeAliasRegistry.registerAlias("MANAGED", ManagedTransactionFactory.class);
    //...
}

JdbcTransactionFactoryManagedTransactionFactory都实现了TransactionFactory接口:

JdbcTransactionFactory
ManagedTransactionFactory

按照配置文件,其根标签的configuration对应Configuration类,在configuration类中构造器中注册了JdbcTransactionFactory和ManagedTransactionFactory的别名
configuration

dataSource标签配置了对应的数据库配置,例如数据源连接类型等。在mybatis中dataSource的type属性可以选择有以下几种值:JNDI | POOLED | UNPOOLED | 自定义数据源

  • 指定POOLED后,mybatis则采用自带默认的数据源进行数据库连接管理。
  • 指定UNPOOLED后,mybatis则不采用数据源连接数据库。每次连接都创建新的会话,结束后销毁会话(销毁会话需要自己手动)。
  • 指定JNDI 后,mybatis则采用JNDI来管理数据库连接。
  • 自定义数据源: 当我们想采用第三方数据源管理数据库连接时,mybatis允许我们通过实现DataSourceFactory接口来自定义数据源设置。

在mybatis中,数据源配置的别名也是Configuration类中进行了注册
数据源配置的别名注册
从源代码中也能看出,实际上mybatis的几种默认数据源设置也是实现了DataSourceFactory接口:
数据源设置

猜你喜欢

转载自blog.csdn.net/u014268482/article/details/80595602
今日推荐