一、关于顺序
Mybatis主配置文件结构上就两大块即文件头和配置,程序员只需要在configuration配置对应标签即可
<?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-config.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核心配置文件-->
<configuration>
<!-- 属性配置-->
<properties url="" resource=""></properties>
<!-- 设置-->
<settings>
<setting name="" value=""/>
</settings>
<!-- 类型别名-->
<typeAliases>
<typeAlias type="" alias=""/>
<package name=""/>
</typeAliases>
<!-- 类型处理器-->
<typeHandlers>
<typeHandler handler="" javaType="" jdbcType=""/>
<package name=""/>
</typeHandlers>
<!-- 对象工场-->
<objectFactory type="">
<property name="" value=""/>
</objectFactory>
<!-- 对象封装器工场-->
<reflectorFactory type=""/>
<!-- 插件-->
<plugins>
<plugin interceptor=""></plugin>
</plugins>
<!-- 环境配置-->
<environments default="">
<!-- 环境变量-->
<environment id="">
<!-- 事务管理器-->
<transactionManager type=""></transactionManager>
<!-- 数据源类型-->
<dataSource type=""></dataSource>
</environment>
</environments>
<!-- 数据库厂商标识-->
<databaseIdProvider type="">
<property name="" value=""/>
</databaseIdProvider>
<!-- 映射器-->
<mappers>
<mapper resource=""/>
<mapper class=""/>
<mapper url=""/>
<package name=""/>
</mappers>
</configuration>
注意:只能按照上面的顺序排序编写配置,当把两个配置颠倒位置时会报错,如下图
二、关于功能(虽然一共有11个配置标签但是不是所有的都常用)
1.properties配置文件
方法一:在外部配置
数据库的驱动信息每次都在主配置文件编写显得environment部分比较臃肿,我们可以把配置文件在外部配置,这种方法也便于维护人员的调试
创建properties外部配置文件一共分为三步,第一步先在外部建一个以properties结尾的文件写入我们所需要的驱动配置信息
第二步在configuration下使用外部配置文件标签,给出配置文件全路径
第三步在dataSource配置中使用外部配置文件的别名代替
方法二:在内部配置
其实除了上述两种方法外还可以通过方法参数传递属性。
如果属性存在于多个位置,MyBatis 将按以下顺序加载它们:
- 首先读取属性元素正文中指定的属性,
- 从类路径资源或属性元素的 url 属性加载的属性将秒读取,并覆盖已指定的任何重复属性,
- 作为方法参数传递的属性将最后读取,并覆盖可能已从属性正文和资源/url 属性加载的任何重复属性。
因此,优先级最高的属性是作为方法参数传入的属性,后跟资源/url 属性,最后是在属性元素的正文中指定的属性。
2.settings(一般根据项目需求自行设置)
<settings>
<!-- 缓存启用-->
<setting name="cacheEnabled" value="true"/>
<!-- 启用懒加载缓存-->
<setting name="lazyLoadingEnabled" value="true"/>
<!-- 已启用多个结果集-->
<setting name="multipleResultSetsEnabled" value="true"/>
<!-- 使用列标签-->
<setting name="useColumnLabel" value="true"/>
<!-- 使用生成的密钥-->
<setting name="useGeneratedKeys" value="false"/>
<!-- 自动映射行为-->
<setting name="autoMappingBehavior" value="PARTIAL"/>
<!-- 自动映射未知列行为-->
<setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
<!-- 默认执行器类型-->
<setting name="defaultExecutorType" value="SIMPLE"/>
<!-- 默认语句超时时间-->
<setting name="defaultStatementTimeout" value="25"/>
<!-- 默认提取大小-->
<setting name="defaultFetchSize" value="100"/>
<!-- 启用安全行边界-->
<setting name="safeRowBoundsEnabled" value="false"/>
<!-- 将下划线映射到驼峰大小写-->
<setting name="mapUnderscoreToCamelCase" value="false"/>
<!-- 本地缓存作用域-->
<setting name="localCacheScope" value="SESSION"/>
<!-- 为Null的jdbc类型-->
<setting name="jdbcTypeForNull" value="OTHER"/>
<!-- 延迟加载触发器方法-->
<setting name="lazyLoadTriggerMethods"
value="equals,clone,hashCode,toString"/>
</settings>
3.typeAliases
方法一:类型别名只是 Java 类型的较短名称。它仅与 XML 配置相关,并且只是为了减少完全限定类名的冗余类型而存在。例如:
<typeAliases>
<typeAlias alias="Author" type="domain.blog.Author"/>
<typeAlias alias="Blog" type="domain.blog.Blog"/>
<typeAlias alias="Comment" type="domain.blog.Comment"/>
<typeAlias alias="Post" type="domain.blog.Post"/>
<typeAlias alias="Section" type="domain.blog.Section"/>
<typeAlias alias="Tag" type="domain.blog.Tag"/>
</typeAliases>
这样我们在接口的配置文件中就可以使用这些别名了
方法二:指定一个包,Mybatis会在包中自动寻找bean,找到bean后有注释会优先使用注释,如果bean没有注释则会默认使用类的类名(首字母小写)
<typeAliases> <package name="domain.blog"/> </typeAliases>
常见 Java 类型有许多内置类型别名。它们都不区分大小写,请注意由于名称过载而对基元的特殊处理。
别名 | 映射类型 |
_byte | 字节 |
_long | 长 |
_short | 短 |
_int | int |
_integer | int |
_double | 双 |
_float | 浮 |
_boolean | 布尔 |
字符串 | 字符串 |
字节 | 字节 |
长 | 长 |
短 | 短 |
int | 整数 |
整数 | 整数 |
双 | 双 |
浮 | 浮 |
布尔 | 布尔 |
日期 | 日期 |
十进制 | 大十进制 |
大十进制 | 大十进制 |
对象 | 对象 |
地图 | 地图 |
哈希映射 | 哈希映射 |
列表 | 列表 |
数组列表 | 阵列列表 |
收集 | 收集 |
迭 代 | 迭 代 |