MyBatis 配置 environments 详解

0x00:前言参考

之前的《MyBatis 中 SqlMapConfig 配置文件详解》记了一下 MyBatis 中的核心配置文件各个标签的作用和使用场景,这篇文章细说一下配置文件中 environments 标签的详细使用。

0x01:标签介绍

在 MyBatis 中,environments 是放有关数据库连接数据的配置信息的,其中可以配置多个数据库的连接环境,方便 sql 语句可以适用于多个数据库环境。

在 environments 中可以配置一个个单独的 environment,它们代表多个数据库环境的配置信息。每一个 environment 都包含了事务管理器 transactionManager 和数据源 DataSource 信息。

0x02:代码示例

以下是一个完整的 environments 的配置,代码示例如下:

<environments default="development">  
    <environment id="development">  
        <transactionManager type="JDBC" />  
        <dataSource type="POOLED">  
            <property name="driver" value="${driver}"/>  
            <property name="url" value="${url}"/>  
            <property name="username" value="${username}"/>  
            <property name="password" value="${password}"/>  
        </dataSource>  
    </environment>  
</environments> 

其中的事务管理器也就是 transactionManager 标签有两种类型,一个是 JDBC,一个是 MANAGET。配置 JDBC 代表直接使用 JDBC 的提交和回滚设置。配置 MANAGED 则不提交和回滚连接,而是中容器来管理事务的生命周期。默认情况下,MANAGED 会关闭连接,但是可以动态指定 closeConnection 参数,当设置为 false 时,在 MANAGED 类型下就不会自动关闭连接。配置如下:

 <transactionManager type="MANAGED">
      <property name="closeConnection" value="false"/>
 </transactionManager>

数据源 DataSource 有三种数据源类型:UNPOOLED,POOLED,JNDI。其中 UNPOOLED 是设置每次请求时都打开和关闭连接。POOLED 是设置一个管理数据库连接的资源池,用来控制数据库的连接与关闭次数,利用池的概念将 JDBC 连接对象组织起来。而 JNDI 是配置连接外部数据源的信息,例如服务器提供的数据源。

DataSource 中是配置 JDBC 连接数据库说需要的各项参数信息的,详细内容见下表:

0x03:知识拓展

MyBatis 支持配置多个数据库连接环境,在多个数据库中执行 sql 语句时,某些规则是不一样的,如果要兼容各个数据库厂商的 sql 语言规则,则需要配置 databaseIdProvider 参数。在 MyBatis 全局配置文件中添加如下配置即可:

<databaseIdProvider type="DB_VENDOR">
      <property name="MySQL" value="mysql"/>       
      <property name="Oracle" value="oracle" />
</databaseIdProvider>

这个用到的不多,了解一下。

0x04:总结

在 MyBatis 中使用 environments 来配置数据库的连接信息,其中包括了事务管理器 transactionManager 和数据源 dataSource。当 sql 要支持多个厂商的规则需求时,可以通过 databaseIdProvider 配置来实现。


更多关于代码审计、WEB渗透、网络安全的运维的知识,请关注微信公众号:发哥微课堂。



猜你喜欢

转载自blog.csdn.net/fageweiketang/article/details/80821935