MyBatis知识点复习-04全局配置文件的properties和alias的讲解
这一讲我们将介绍在SqlMapConfig文件里配置properties和alias属性,接下来你会看到他们的神奇之处:就是简化SqlMapConfig.xml文件
上一篇:MyBatis知识点复习-03Dao与Mapper代理实现
下一篇:MyBatis知识点复习-05加载映射文件的几种方式
一.properties文件配置
我们先来看一下目前为止到当前章节我们的SqlMapConfig.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>
<environments default="development">
<environment id="development">
<!-- 配置JDBC事务控制,由mybatis进行管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 配置数据源,采用dbcp连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis复习"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="sqlMap/User.xml"></mapper>
<mapper resource="sqlMap/UserMapper.xml"></mapper>
</mappers>
</configuration>
这一章的内容还是比较轻松的,接下来请跟着我做。
首先在src目录下创建文件db.properties,内容如下:
driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis复习?useUnicode=true&characterEncoding=utf8
name=root
password=123456
接下来在SqlMapConfig.xml文件里的Configuration标签下面的environments标签前面写上如下内容:
<properties resource="db.properties"></properties>
接下来我们把下面内容
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis复习"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
修改为这样:
<property name="driver" value="${driverClass}$"/>
<property name="url" value="${url}$"/>
<property name="username" value="${username}$"/>
<property name="password" value="${password}$"/>
注意name的值不要改这是由mybatis框架的属性来决定的,然后value的值里面按照我们在db.properties里面的来写。
下面我们来运行TestUser的Test方法测试一下
插入成功(根据前面的文章,如果你看过,那么自然会知道为什么是插入操作了)
二.alias配置
在讲解之前我希望给你一个浅显的直观的对改配置的认知:
在生活中,比如一个老外,他的名字贼长,叫亚力三大.洛夫斯基.诺娃.米奇.凯文布雷.布尔格林;
我的妈好长,但是我们通常不会这么叫对吧,我们可以给他起个小名,叫做小林,没错现在你知道了,alias配置就是为了简化名字给他起个别名而已,下面我们来开心的学习吧.
在UserMap.xml文件中有这么一段:
<insert id="saveUser" parameterType="domain.User">
insert into user (username,birthday,sex,address) value(#{username},#{birthday},#{sex},#{address})
</insert>
现在我觉得domain.User这个太长了,我给他起个别名,叫sss,操作如下:
在properties标签下面加上下面内容
<!--alias是别名的意思,那么typeAlias就是类型别名-->
<typeAliases>
<typeAlias type="domain.User" alias="sss"></typeAlias>
</typeAliases>
接着将上面的UserMapper.xml的对应内容修改如下
<insert id="saveUser" parameterType="user">
insert into user (username,birthday,sex,address) value(#{username},#{birthday},#{sex},#{address})
</insert>
测试发现成功:
其实这个地方如果不用别名用原名也是可以的,不过谁会这么傻呢。
接下来还有另外的一种配置更加的厉害,我们发现在用typeAlias时每次都要为一个类起一个别名,那如果有一堆类起别名呢,难道还要一个一个的写一遍?于是我们有下面的解决办法:
<typeAliases>
<typeAlias type="domain.User" alias="user"></typeAlias>
</typeAliases>
将上面的这个改为下面;
<typeAliases>
<package name="domain"/>
</typeAliases>
对应的UserMapper.xml里面的parameterType="domain.User"改为parameterType="user"
这么写表示将domian包下面的所有类起一个别名,形式为将类的第一个字母小写,不过这一种方法与typealias相比起别名的形式比较固定,但是这是无足轻重的,这里测试通过乐我就不贴图了