前两章简单的讲解了MyBatis的使用方式. 接下来先全局的说一下MyBatis的全局的xml配置详细说明.
XML格式定义
-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
configuration 的映射文件(根据定义顺序说明)
- properties 属性
- settings 设置
- typeAliases 类型别名
- typeHandlers 类型处理器
- objectFactory 对象工厂
- objectWrapperFactory MyBatis对基本类型, 基本对象map和集合的封装.
- reflectorFactory 反射模块工厂
- plugins 插件
- environments 环境配置
- databaseIdProvider 数据库厂商标识
- mappers 映射器
properties 属性
这些属性都是可外部配置且可动态替换的,既可以在典型的 Java 属性文件中配置,也可通过 properties 元素的子元素来传递。例如:
properties中的 resource 是根据项目查找, 所以config.properties 所在目录如下图所示:
引用的config.properties内容如下:
这里使用组合使用的方式主要是为了能够演示properties的使用方式, 在真正使用的时候, 直接引入config.properties就可以了. 这样在真正的和Spring做搭建的时候提供了便利.
在MyBatis的config中使用方式如下图:
测试代码(UserMapperTest):
测试通过:
需要注意配置的加载顺序, 按照以下来加载。
- 在 properties 元素体内指定的属性首先被读取。
- 然后根据 properties 元素中的 resource 属性读取类路径下属性文件或根据 url 属性指定的路径读取属性文件,并覆盖已读取的同名属性。
- 最后读取作为方法参数传递的属性,并覆盖已读取的同名属性。也就是Java代码配置的方式。
因此,通过方法参数传递的属性具有最高优先级,resource/url 属性中指定的配置文件次之,最低优先级的是 properties 属性中指定的属性。
从 MyBatis 3.4.2 开始,你可以为占位符指定一个默认值。使用范例如下:
这个特性默认是关闭的。如果你想为占位符指定一个默认值, 你应该添加一个指定的属性来开启这个特性。例如:
创建对应的配置文件(config.properties)和 dot-mybatis-config.xml 代码如下:
编写测试程序(DotUserMapperTest), 代码如下:
准备测试, 测试通过。
就是你要的效果。 可以尝试输入一些错误的配置, 看一下效果。
注意:因为“:”是允许设置成name值得, 所以想开启上面的配置, 就需要修改默认的分隔符。
使用的时候就需要使用, 这里的db:username是一个property的name值
案例说明:
这里如果使用了db:username为name值, 就会出现如下的错误信息:
从错误信息看, 应该是使用默认的“:”进行分割的。 模拟代码就是通过字符匹配到第一个“:”, 然后截取对应的字符串。源码如下:
所以我们就需要配置自定义的分隔符(separator-mybatis-config.xml)。
测试代码(SeparatorUserMapperTest):
测试结果为, 测试成功
这里给点建议, 把上面的例子都自己动手做一边, 多修改修改数据,不用管对错, 先运行起来看看, 这样你除了能够看到如何正确配置之外,也能看到配置错误之后, 错误的信息是什么。 看的错误多了, 你也就成了别人眼里能够解决问题的大牛了。 你想成为大牛吗?
关注我, 感谢感谢。
全部代码已经上传到Github
GitHub地址: https://github.com/xymiao/mybatis3
本篇代码地址: https://github.com/xymiao/mybatis3/tree/master/mybatis3_03_mybatis_config_properties