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相比起別名的形式比較固定,但是這是無足輕重的,這裏測試通過樂我就不貼圖了