MyBatis 第二十六章 MyBatis 的核心配置文件概述


MyBatis —— 第二十六章 MyBatis 的核心配置文件概述


1. MyBatis 核心配置文件的层级关系

  • configuration 配置
    • properties 属性
    • settings 设置
    • typeAliases 类型别名
    • typeHandlers 类型处理器
    • objectFactory 对象工厂
    • plugins 插件
    • enviroments 环境
      • environment 环境变量
        • transactionManager 事务管理器
        • dataSource 数据源
    • databaseProvider 数据库厂商标识
    • mappers 映射器

2. MyBatis 常用配置解析

2.1. environments 标签

数据库环境配置,支持多环境配置

<environments default="development"> <!-- 指定默认环境名称 -->
        <environment id="development"> <!-- 指定当前环境名称 -->
              <transactionManager type="JDBC"/> <!-- 指定事务管理类型时JDBC -->
          <dataSource type="POOLED"> <!-- 指定当前数据源类型是连接池 -->
              <!-- 数据源配置基本参数 -->
                  <property name="driver" value="$&#123;jdbc.driver&#125;" />
              <property name="url" value="$&#123;jdbc.url&#125;" />
              <property name="username" value="$&#123;jdbc.username&#125;" />
              <property name="password" value="$&#123;jdbc.password&#125;" />
          </dataSource>
      </environment>
</environments>

其中,事务管理器(transactionManager)类型有两种:

  • JDBC 这个配置就是直接使用了 JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作用域。
  • MANAGED 这个配置几乎没做什么。它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器上下文)。默认情况下它会关闭连接,而一些容器并不希望这样,因此需要将 closeConnection 属性设置为 false 来阻止它默认的关闭行为。

其中,数据源(dataSource) 类型有三种:

  • UNPOOLED 这个数据源的实现只是每次被请求时打开和关闭连接。
  • POOLED 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来。
  • JNDI 这个数据的实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的引用。

2.2. mapper 标签

该标签的作用是加载映射的,加载方式有如下几种:

  • 使用相对于路径的资源引用,如:<mapper resource="org/mybatis/builder/AuthorMapper.xml" />
  • 使用完全限定资源定位符(URL),如:<mapper url="file:///var/mappers/AuthorMapper.xml" />
  • 使用映射器接口实现类的完全限定类名,如:<mapper class="org.mybatis.builder.AuthorMapper" />
  • 将包内的映射器接口实现全部注册为映射器:如:<mapper name="org.mybatis.builder" />

2.3. properties 标签

实际开发中,习惯将数据源的配置星系单独抽取成一个 properties 文件,该标签可以加载额外配置的 properties 文件

<properties resource="jdbc.properties"></properties>

2.4. typeAliases 标签

类型别名是为 Java 类型设置一个短的名字。原来的类型名称配置如下:

<select="findAll" resultType="com.yourname.domain.User"><!-- User fully qualified name -->
        select * from User
</select>

配置 typeAliases,为 com.yourname.domain.User 定义别名为 user

<typeAliases>
        <typeAlias type="com.yourname.domain.User" alias="user"></typeAlias>
</typeAliases>
<select="findAll" resultType="user"><!-- User is an alias -->
        select * from User
</select>

上面我们是自己定义的别名,MyBatis 框架已经为我们设置好一些常用的类型的别名

别名 数据类型
string java.lang.String
long java.lang.Long
int java.lang.Integer
double java.lang.Double
boolean java.lang.Boolean
… … … …

3. 知识要点

核心配置文件常用配置:

  1. properties 标签: 该标签可以加载外部的 properties 文件

    <properties resource="jdbc.properties"></properties>
    
  2. typeAlies 标签: 设置类型别名

    <typeAlias type="com.gregperlinli.domain.User" alias="user"></typeAlias>
    
  3. mapper 标签: 加载映射配置

    <mapper resource="com/gregperlinli/mapper/UserMapper.xml"></mapper>
    
  4. environments 标签: 数据源环境配置标签

    <environments default="development"> 
            <environment id="development"> 
                  <transactionManager type="JDBC"/> 
              <dataSource type="POOLED"> 
                      <property name="driver" value="$&#123;jdbc.driver&#125;" />
                  <property name="url" value="$&#123;jdbc.url&#125;" />
                  <property name="username" value="$&#123;jdbc.username&#125;" />
                  <property name="password" value="$&#123;jdbc.password&#125;" />
              </dataSource>
          </environment>
    </environments>
    


文章作者: gregPerlinLi
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 gregPerlinLi !
  目录