MyBatis全局配置文件

2020-05-03  本文已影响0人  JBryan

MyBatis环境搭建请移步:https://www.jianshu.com/p/a27ff5b3b935
MyBatis的配置文件mybatis-config.xml包含了会深深影响 MyBatis 行为的设置和属性信息。 配置文档的顶层结构如下:

配置文件.jpg
若配置了标签,则标签的顺序必须如上图:properties标签在最上面,下面是settings,以此类推。

1、properties属性

这些属性可以在外部进行配置,并可以进行动态替换。也可以在 properties 元素的子元素中设置。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--  使用properties标签,可以引入外部properties配置文件中的内容
        resource:引入类路径下的资源文件
        url:引入网络路径或者磁盘路径下的资源
      -->
    <properties resource="dbconfig.properties">
      <property name="name" value="dev_user"/>
      <property name="password" value="F2Fa3!33TYyg"/>
    </properties>
</configuration>

dbconfig.properties

jdbc.driver = com.mysql.cj.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT
jdbc.username = root
jdbc.password = 123456

设置好的属性可以在整个配置文件中用来替换需要动态配置的属性值。比如:

     <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>

2、settings运行环境

这是MyBatis中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。
例如:

<!--
    settings包含了很多重要的设置项
        mapUnderscoreToCamelCase:开启驼峰命名
        logImpl:开启控制台打印sql语句
    -->
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <setting name="logImpl" value="STDOUT_LOGGING" />
<!--        开启延迟加载-->
        <setting name="lazyLoadingEnabled" value="true"/>
        <setting name="aggressiveLazyLoading" value="false"/>
        
<!--        开启二级缓存-->
        <setting name="cacheEnabled" value="true"/>
    </settings>

3、类型别名typeAliases

类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。

<!--
别名处理器,可以为Java类型取别名,别名不区分大小写
1、typeAlias:为每个类起一个别名
2、package:为包下的所有类批量起别名
    name:指定包名,当前包下的所有类都起一个默认名(类名首字母小写)
3、@Alias注解给某个类起别名
-->
    <typeAliases>
        <package name="com.ljessie.mybatisdemo"/>
<!--        <typeAlias type="com.ljessie.mybatisdemo.entity.Student" alias="Student"/>-->
    </typeAliases>

下面是一些为常见的 Java 类型内建的类型别名。它们都是不区分大小写的,注意,为了应对原始类型的命名重复,采取了特殊的命名风格。


TypeAliases.jpg

4、环境配置(environments)

MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做。例如,开发、测试和生产环境需要有不同的配置;或者想在具有相同 Schema 的多个生产数据库中使用相同的 SQL 映射。还有许多类似的使用场景。

<environments default="development">
    <environment id="development">
      <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>
事务管理器(transactionManager)

在 MyBatis 中有两种类型的事务管理器(也就是 type="[JDBC|MANAGED]"):
JDBC – 这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源获得的连接来管理事务作用域。
MANAGED – 这个配置几乎没做什么。它从不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。

数据源(dataSource)

dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。
有三种内建的数据源类型(也就是 type="[UNPOOLED|POOLED|JNDI]"):

UNPOOLED– 这个数据源的实现会每次请求时打开和关闭连接。
POOLED– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。 这种处理方式很流行,能使并发 Web 应用快速响应请求。
JNDI – 这个数据源实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的数据源引用。

5、数据库厂商标识(databaseIdProvider)

MyBatis 可以根据不同的数据库厂商执行不同的语句,这种多厂商的支持是基于映射语句中的 databaseId 属性。

<databaseIdProvider type="DB_VENDOR">
        <!--        为不同的数据库厂商起别名-->
        <property name="MySQL" value="mysql"/>
        <property name="SQL Server" value="sqlserver"/>
        <property name="DB2" value="db2"/>
        <property name="Oracle" value="oracle" />
    </databaseIdProvider>

6、映射器(mappers)

接下来就要定义 SQL 映射语句了。 但首先,我们需要告诉 MyBatis 到哪里去找到这些语句。 在自动查找资源方面,Java 并没有提供一个很好的解决方案,所以最好的办法是直接告诉 MyBatis 到哪里去找映射文件。 你可以使用相对于类路径的资源引用,或完全限定资源定位符(包括 file:/// 形式的 URL),或类名和包名等。例如:

<!--    将sql映射注册到全局配置中-->
  <mappers>
<!--
注册一个sql映射
    resource:引用类路径下的资源
    class:直接引用接口
        推荐比较重要的Dao接口,来写sql映射文件;不重要的Dao接口,使用注解
-->
    <mapper resource="mappers/StudentMapper.xml"/>
<!--    <mapper class="com.ljessie.mybatisdemo.dao.StudentMapper"/>-->
<!--      package:批量注册-->
      <package name="com.ljessie.mybatisdemo.dao"/>

<!--      <mapper class="com.ljessie.mybatisdemo.dao.StudentDao"></mapper>-->
  </mappers>
上一篇下一篇

猜你喜欢

热点阅读