mybatis的全局配置文件SqlMapConfig.xml配置内容如下:
(1)properties(属性)
(2) settings(全局配置参数)
(3) typeAliases(类型别名)
(4) typeHandlers(类型处理器)
(5) objectFactory(对象工厂)
(6) plugins(插件)
(7)environments(环境集合属性对象)
environment(环境子属性对象)
transactionManager(事务管理)
dataSource(数据源)
(8)mappers(映射器)
properties属性
- 需求:将数据库连接参数单独配置在
db.properties
文件中,主需要在SqlMapConfig.xml
文件中加载db.properties
的属性值,在SqlMapConfig.xml
中就不需要对数据库连接参数硬编码
- db.properties代码
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=root
<?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 resource="db.properties"></properties>
<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>
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
问题
:将数据库的配置信息写在SqlMapConfig.xml
文件中是硬编码,难道写在db.properties
文件中就不是硬编码了吗?当然也是硬编码!但是db.properties
文件中的内容要比SqlMapConfig.xml
内容少得多,干净清爽的多!SqlMapConfig.xml
文件中有各种各样的配置,而db.properties
而只有数据库相关的配置:在企业开发中升级程序有时候是需要对配置文件进行修改的,而这种修改基本上不可能是手工去修改,而是通过程序来读写文件的:那么如果需要对数据库配置参数进行修改的话,现在只需要修改db.properties
即可,不需要对SqlMapConfig.xml
进行修改:而对db.properties
修改要比对SqlMapConfig.xml
文件的修稿要容易简单的多得多!
- 测试配置是否成功:
正常测试
vs 异常测试
- 注意:mybatis将按照下面的顺序来加载属性
(1) 在properties元素体内定义的属性首先被读取
(2) 然后会读取properties元素中resource属性或url属性加载的属性,它会覆盖已读取的同名属性
(3) 最后读取parameterType传递的属性,它会覆盖已读取的同名属性
- 因此,通过parameterType传递的属具有最高优先级,resource或url加载的属性次之,最低优先级的是properties元素体内定义的属性
- 建议:不要在
properties元素体内
添加任何属性值,只将属性值定义在properties文件中,在properties文件中定义属性名要有一定的特殊性:如xxx.xxx.xxx.xxx
settings全局参数配置
- mybatis框架在运行时可以调整一些运行参数:比如:开启二级缓存、开启延时加载…
- mybatis的settings全局配置参数会影响mybatis的运行行为
typeAliases别名(重点)
- 需求:在mapper.xml文件中定义很多的statement,statement需要parameterType指定输入参数的映射类型,需要resultType指定输出参数的映射类型:如果在指定类型是键入全限定类型,不方便进行开发:那么可以针对parameterType和resultType指定的类型定义一些别名:在mapper.xml中通过别名定义,方便开发
- 默认支持的别名
别名 |
映射的类型 |
_byte |
byte |
_long |
long |
_short |
short |
_int |
int |
_integer |
int |
_double |
double |
_float |
float |
_boolean |
boolean |
string |
String |
bye |
Byte |
long |
Long |
short |
Short |
int |
Integer |
double |
Double |
float |
Float |
boolean |
Boolean |
date |
Date |
<?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 resource="db.properties">
</properties>
<typeAliases>
<typeAlias type=