MyBatis 配置 environments 详解

0x00:前言参考

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

0x01:标签介绍

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

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

0x02:代码示例

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

"development">  
    "development">  
        "JDBC" />  
        "POOLED">  
            "driver" value="${driver}"/>  
            "url" value="${url}"/>  
            "username" value="${username}"/>  
            "password" value="${password}"/>  
          
      
 

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

 "MANAGED">
      "closeConnection" value="false"/>
 

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

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

 

 

0x03:知识拓展

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

"DB_VENDOR">
      "MySQL" value="mysql"/>       
      "Oracle" value="oracle" />

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

0x04:总结

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

公众号回复数字“8”领取CIS加固全套手册。

微 信:fageweiketang,朋友圈不定期干货分享,欢迎讨论。

公众号:发哥微课堂,专注于代码审计、WEB渗透、网络安全。

 MyBatis 配置 environments 详解_第1张图片                    MyBatis 配置 environments 详解_第2张图片

你可能感兴趣的:(MyBatis)