基本结构
<?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>
</configuration>
configuration:MyBatis框架核心配置文件的根节点元素,Mybatis所有的配置信息都会存放在这里面。
子元素
1.properties元素
引用外部文件,描述的是一些外部的、可替代的属性
<!--使用方式有两种:-->
<!-- 1.引入文件,文件里有设置好的属性信息 -->
<properties resource="xxx" />
<!-- 2.获取属性 -->
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" val ue="${password}"/>
</dataSource>
<!-- ${xxx}和引入的文件属性名称相同 -->
如果一个属性在不只一个地方进行了配置,那么,MyBatis 将按照下面的顺序来加载:
首先读取在 properties 元素体内指定的属性。
然后根据 properties 元素中的 resource 属性读取类路径下属性文件,或根据 url 属性指定的路径读取属性文件,并覆盖之前读取过的同名属性。
最后读取作为方法参数传递的属性,并覆盖之前读取过的同名属性。
结论:resource属性值的优先级高于property子节点配置的值。
2.settings元素
里面设置的选项会影响整个MyBatis框架的运行时行为
部分常用选项:
设置项 | 描述 | 允许值 | 默认值 |
---|---|---|---|
cacheEnabled | 对此配置文件下所有SQL映射的缓存进行全局性开关设置 | true/false | true |
lazyLoadingEnabled | 全局启用或禁用延迟加载。启用后,所有关系都会被延迟加载 | true/false | false |
autoMappingBehavior | 指定MyBatis框架是否应自动映射,及如何映射查询结果集中的列到Java对象的字段/属性 | NONE/PARTIAL/FULL | PARTIAL |
logImpl | 指定MyBatis框架应使用的日志记录实现。如果不设置,将自动发现日志记录实现 | SLF4J/LOG4J/LOG4J2/JDK_LOGGING… | 无 |
<settings>
<setting name="logImpl" value="LOG4J"/>
<settings />
3.typeAliases元素
可以为Java类型配置一个别名。使用别名可以避免在SQL映射文件中使用冗长的完全限定类名。仅限于xml配置
<typeAliases>
<!--这里给实体类取别名,方便在mapper配置文件中使用-->
<typeAlias alias="Users" type="com.bean.Users"/>
</typeAliases>
Uers可以出现在任何需要com.bean.Users的地方,但上述写法的弊端在于,如果一个项目中有多个实体类,需要每个都要配置。有更加简化的写法,就是通过package的name属性直接指定包名。
<typeAliases>
<!--Mybati会自动扫描包名下的JavaBean,并设置一个别名,默认名称为JavaBean的非限定类名。-->
<package name="com.bean"/>
</typeAliases>
如果要在配置包的情况下,设置别名,需要用到注解。
@Alias("user")
public class User {
}
使用注解设置别名
4.environments元素
可以为MyBatis配置多套运行时环境,从而将SQL映射到不同的数据库环境上,但是不管增加几套运行环境,都必须明确选择当前当前唯一的运行环境。因为每个SqlSessionFactory只能匹配一个选择环境。
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<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>
1.<environments default="development">
default指定一个默认的运行环境
2.<environment id="development">
每个environment元素代表一个运行环境,id:各运行环境配置的命名,唯一
3.<transactionManager type="JDBC">
指定事务管理类型,(Mybatis有二种事务管理类型JDBC和MANAGED)
JDBC表示直接使用JDBC的提交和回滚功能
MANAGED表示由容器负责
4.<dataSource type="POOLED">
使用标准的JDBC数据源接口来配置JDBC连接对象的资源,提供了三种数据源类型(UNPOOLED、POOLED、JNDI)
POOLED表示MyBatis框架实现的简单数据库连接池类型,利用“池”的概念组织数据库的对象,减少创建新连接时消耗的时间和资源
JNDI表示使用容器中以JNDI方式提供的数据源资源
5.mappers元素
SQL映射器的路径,告诉mybatis去哪里找到SQL映射文件
<!-- 类路径的资源引用 -->
<mappers>
<mapper resource="dao/impl/AuthorMapper.xml"/>
<mapper resource="dao/impl/BlogMapper.xml"/>
</mappers>
<!-- 映射器接口实现类的完全限定类名 -->
<mappers>
<mapper class="dao.impl.AuthorMapper"/>
</mappers>
<!-- 将包内的映射器接口实现全部注册为映射器 -->
<mappers>
<package name="dao.impl"/>
</mappers>
配置文件结构
除了上述配置一些基本元素,值得注意的是,该配置文件的元素节点是有先后顺序的,其文件结构
configuration 配置
peoperties 可以配置在Java属性配置文件中
settings 修改MyBatis在运行时的行为方式
typeAliases 为Java类型命名一个别名(简称)
typeHandlers 类型处理器
objectFactory 对象工厂
plugins 插件
environments 环境
environment 环境变量
transactionManager 事务管理器
dataSource 数据源
mappers 映射器