学科分类
目录
SSM框架

<environments>元素

在配置文件中,<environments>元素用于对环境进行配置。MyBatis的环境配置实际上就是数据源的配置,我们可以通过<environments>元素配置多种数据源,即配置多种数据库。

使用<environments>元素进行环境配置的示例如下:

<environments default="development">
    <environment id="development">
        <!-- 使用JDBC事务管理 -->
        <transactionManager type="JDBC" />
        <!-- 配置数据源 -->
        <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>

在上述示例代码中,<environments>元素是环境配置的根元素,它包含一个default属性,该属性用于指定默认的环境ID。<environment>是<environments>元素的子元素,它可以定义多个,其id属性用于表示所定义环境的ID值。在<environment>元素内,包含事务管理和数据源的配置信息,其中<transactionManager>元素用于配置事务管理,它的type属性用于指定事务管理的方式,即使用哪种事务管理器;<dataSource>元素用于配置数据源,它的type属性用于指定使用哪种数据源。

在MyBatis中,可以配置两种类型的事务管理器,分别是JDBC和MANAGED。关于这两个事务管理器的描述如下:

● JDBC:此配置直接使用了JDBC的提交和回滚设置,它依赖于从数据源得到的连接来管理事务的作用域。

● MANAGED:此配置从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期。默认情况下,它会关闭连接,但一些容器并不希望这样,为此可以将closeConnection属性设置为false来阻止它默认的关闭行为。

注意:

如果项目中使用的是Spring+ MyBatis,则没有必要在MyBatis中配置事务管理器,因为实际开发中,会使用Spring自带的管理器来实现事务管理。

对于数据源的配置,MyBatis框架提供了UNPOOLED、POOLED和JNDI三种数据源类型,具体如下:

1、UNPOOLED

配置此数据源类型后,在每次被请求时会打开和关闭连接。它对没有性能要求的简单应用程序是一个很好的选择。

UNPOOLED类型的数据源需要配置5种属性,如表1所示。

表1 UNPOOLED数据源需要配置的属性

属性 说明
driver JDBC驱动的Java类的完全限定名(并不是JDBC驱动中可能包含的数据源类)
url 数据库的URL地址
username 登录数据库的用户名
password 登录数据库的密码
defaultTransactionIsolationLevel 默认的连接事务隔离级别

2、POOLED

此数据源利用“池”的概念将JDBC连接对象组织起来,避免了在创建新的连接实例时所需要初始化和认证的时间。这种方式使得并发Web应用可以快速的响应请求,是当前流行的处理方式(本书中使用的就是此种方式)。

配置此数据源类型时,除了表7-4中的5种属性外,还可以配置更多的属性,如表2所示。

表2 POOLED数据源可额外配置的属性

属性 说明
poolMaximumActiveConnections 在任意时间可以存在的活动(也就是正在使用)连接数量,默认值:10。
poolMaximumIdleConnections 任意时间可能存在的空闲连接数。
poolMaximumCheckoutTime 在被强制返回之前,池中连接被检出(checked out)时间,默认值:20000 毫秒,即20秒。
poolTimeToWait 如果获取连接花费的时间较长,它会给连接池打印状态日志并重新尝试获取一个连接(避免在误配置的情况下一直处于无提示的失败),默认值:20000毫秒,即20秒。
poolPingQuery 发送到数据库的侦测查询,用来检验连接是否处在正常工作秩序中。默认是“NO PING QUERY SET”,这会导致多数数据库驱动失败时带有一定的错误消息。
poolPingEnabled 是否启用侦测查询。若开启,必须使用一个可执行的SQL语句设置poolPingQuery属性(最好是一个非常快的SQL),默认值:false。
poolPingConnectionsNotUsedFor 配置poolPingQuery的使用频度。可以被设置成匹配具体的数据库连接超时时间,来避免不必要的侦测,默认值:0(表示所有连接每一时刻都被侦测,只有poolPingEnabled的属性值为true时适用)。

3、JNDI

此数据源可以在EJB或应用服务器等容器中使用。容器可以集中或在外部配置数据源,然后放置一个JNDI上下文的引用。

配置JNDI数据源时,只需要配置两个属性,如表3所示。

表3 JNDI数据源需要配置的属性

属性 说明
initial_context 此属性主要用于在InitialContext中寻找上下文(即initialContext.lookup(initial_context))。该属性为可选属性,在忽略时,data_source属性会直接从InitialContext中寻找。
data_source 此属性表示引用数据源实例位置的上下文的路径。如果提供了initial_context配置,那么程序会在其返回的上下文中进行查找;如果没有提供,则直接在InitialContext中查找。
点击此处
隐藏目录