概述
该文件配置了mybatis的一些全局信息,包含数据库连接信息和mybatis运行时所需的各种特性,以及设置和影响mybatis行为的一些属性。
配置文件的结构
configuration元素是整个xml配置文件的根节点,相当于是MyBatis的总管,MyBatis所有的配置信息都会存放在这里面。MyBatis提供了设置这些配置信息的方法。configuration可从配置文件里获取属性值,也可以通过程序直接设置。
- configuration
配置
- properties
可以配置在java属性配置文件中
- settings
修改MyBatis在运行时的行为方式
- typeAliases
为Java类型命名一个别名
- typeHandlers
类型处理器
- objectFactory
对象工厂
- plugins
插件
- environments
环境
- environment
环境变量
- transactionManager
事务管理器
- dataSource
数据源
- transactionManager
- environment
- mappers
映射器
- properties
properties元素
它是一种外部化、可替代的属性。有如下两种方式进行实现。
- 外部指定的方式
- 创建一个
.properties
文件 - 再在
configuration.xml
文件中引入
- 创建一个
database.properties
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/food?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
username=root
password=123456
configuration.xml部分内容
<!-- 可以配置在java属性配置文件中 -->
<!-- 引入database.properties -->
<properties resource="database.properties"/>
......
<!-- 配置数据库(连接池) -->
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
- 直接配置xml,并使用这些属性对配置项实现动态配置
<!-- 可以配置在java属性配置文件中 -->
<properties>
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="等号左边" value="等号右边"/>
...
</properties>
......
<!-- 配置数据库(连接池) -->
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
- 然后在两个地方都进行了配置。第一种方法的优先级比第二种方法高
settings元素
设置一些非常重要的选项,用于设置和改变MyBatis运行中的行为
设置项 | 描述 | 允许值 | 默认值 |
---|---|---|---|
cacheEnabled | 对在此配置文件下的所有cache进行全局性开/关设置 | true/false | true |
lazyLoadingEnabled | 全局性设置懒加载。 如果设置为false,则所有相关联的设置都会被初始化加载 | true/false | true |
autoMappingBehavior | MyBatis对于resultMap自动映射的匹配级别 | NONE/PARTIAL/FULL | PARTIAL |
typeAliases元素
配置类型别名,通过与MyBatis的SQL映射文件相关联,减少输入多余的完整类名,以简化操作。
<!-- 给实体类起别名,方便在mapper配置文件中使用 -->
<typeAliases>
<typeAlias alias="别名" type="全限定类名"/>
<typeAlias alias="别名" type="全限定类名1"/>
<typeAlias alias="别名" type="全限定类名2"/>
<!-- 当有多个别名非常不方便,这个时候。可以直接指定包名 -->
<package name="包名"/>
</typeAliases>
environments元素
配置多套运行环境,如开发环境、测试环境、生产环境等,我们可以灵活选择不同的配置,从而将SQL映射到不同的数据库环境上。不同的运行环境可以通过environments元素来配置,到那时不管增加几套运行环境,都必须要明确选择出当前唯一的一个运行环境。这是因为每个数据库都对应一个sqlsessiibfactory实例,需要指明哪个运行环境将被创建,并把运行环境中设置的参数传递给sqlsessionfactorybuilder。
<!-- 配置环境 -->
<!-- 默认的运行环境ID。切记要唯一 -->
<environments default="mysql">
<!-- 配置mysql的环境 -->
<environment id="mysql">
<!-- 配置事务的类型 -->
<!-- 二选一:JDBC(一般使用它) 和 MANAGED -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据库(连接池)对应上面properties元素 -->
<!-- 三选一:UNPOOLED、POOLED(一般使用它。他具有池的概念,用完之后会回收)、JNDI -->
<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>
mappers元素
用来定义SQL的映射语句,我们只需要告诉MyBatis去哪里找到这些SQL语句,即去哪里找相应的SQL映射文件,可以使用类资源路径或者URL。
- 使用类资源路径获取资源
<mappers>
<mapper resource="dao/UserDao.xml" />
</mappers>
- 使用URL获取资源
<mappers>
<mapper url="file:///xml具体路径" />
</mappers>
整合xml配置文件
<?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>
<!-- 可以配置在java属性配置文件中 -->
<!-- 引入database.properties -->
<properties resource="database.properties"/>
<!-- 起别名 -->
<typeAliases>
<typeAlias alias="别名" type="全限定类名"/>
<typeAlias alias="别名" type="全限定类名1"/>
<typeAlias alias="别名" type="全限定类名2"/>
<!-- 当有多个别名非常不方便,这个时候。可以直接指定包名 -->
<package name="包名"/>
</typeAliases>
<!-- 配置环境 -->
<environments default="mysql">
<!-- 配置mysql的环境 -->
<environment id="mysql">
<!-- 配置事务的类型 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据库(连接池) -->
<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>
<!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件 -->
<mappers>
<mapper resource="dao/UserDao.xml" />
<!-- <package name="dao"/>-->
</mappers>
</configuration>