Mybatis核心配置文件解读——environments与properties

140 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第27天

Mybatis核心配置文件解读——environments

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <environments default="development">
         <environment id="development">
             <transactionManager type="JDBC"/>
             <dataSource type="POOLED">
                <!--配置下面四个,用户名和密码写自己的-->
                 <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                 <!--temp替换成你自己的数据库名称-->
                 <property name="url" value="jdbc:mysql://localhost:3306/temp?serverTimezone=UTC&amp;useSSL=false"/>
                 <property name="username" value="root"/>
                 <property name="password" value="hexing"/>
​
             </dataSource>
         </environment>
    </environments>
 <mappers>
     
 </mappers>
</configuration>
  • environments: 看后面有s,用来包含多个environment标签,包含多个使用环境,在使用时可选择其中一个配置使用

    • environments内的default: 设置默认使用的环境,也就是下面对应id的environment标签配置的环境

          <environments default="development">
      
  • environments内的environment: 配置一种使用环境

    • id: 唯一标识对应的的环境

               <environment id="development">
      
    • environment内的transactionManager: 设置事务管理方式

      • 属性: type="JDBC或MANAGED"

        • JDBC表示当前环境中,执行SQL时,使用的是JDBC中原生的事务管理方式,事务的提交和回滚需要手动来处理

        • MANAGED表示被管理,例如Spring

                       <transactionManager type="JDBC"/>
          
    • environments内的dataSource: 配置数据源信息

      • 属性: type="POOLED或UNPOOLED或JNDI"

        • POOLED表示使用数据库连接池缓存数据库连接

        • UNPOOLED与POOLED相对,表示不适用数据库连接池缓存数据库连接

        • JNDI表示使用上下文中的数据源

                       <dataSource type="POOLED">
          
      • dataSource中的property: 设置连接数据库的各项参数

        • 属性: name="driver或url或username或password"

          • 四个值分别对应 数据库驱动数据库连接地址数据库用户名数据库密码
        • 属性: value="根据上述对应的name分别写 驱动全类名数据库连接地址数据库用户名数据库密码"

          <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
          <property name="url" value="jdbc:mysql://localhost:3306/temp?serverTimezone=UTC&amp;useSSL=false"/>
          <property name="username" value="root"/>
          <property name="password" value="hexing"/>
          

以上是environments配置,我们可以将property抽出,单独放到一个文件中保存

在resource文件夹下创建Resource Bundle文件,这样创建出来的文件后缀默认是properties,用于存放多个property的信息:

driver="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://localhost:3306/temp?serverTimezone=UTC&amp;useSSL=false"
username="root"
password="hexing"

但为了防止重名问题,我们可以为参数添加前缀

jdbc.driver="com.mysql.cj.jdbc.Driver"
jdbc.url="jdbc:mysql://localhost:3306/temp?serverTimezone=UTC&amp;useSSL=false"
jdbc.username="root"
jdbc.password="hexing"

配置信息抽出后,我们就可以在配置文件中引入properties文件,方式是在environments外层,与其同级处添加标签进行引入

<configuration>
    <properties resource='jdbc.properties'/>
    <environments default="development">
         <environment id="development">
             <transactionManager type="JDBC"/>
             <dataSource type="POOLED">
                 <!--四个property的value换成${键名}的形式-->
                 <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>
 <mappers>
     
 </mappers>
</configuration>