在mybatis配置實(shí)體類的別名的兩種常用配置方法

為什么要給實(shí)體類配置別名惫搏?

  • 目的是為了在引用實(shí)體類時可以使用實(shí)體類的別名來代替實(shí)體類,達(dá)到簡寫的目的

配置的方法(都是在mybatis的配置xml文件中進(jìn)行配置)

  • 第一種方法硅则,給單獨(dú)的某個實(shí)體類配置別名,如同下面的形式
<!--為實(shí)體類com.demo.dao.User配置一個別名User-->
<typeAliases>
    <typeAlias type="com.demo.dao.User" alias="User"/>
</typeAliases>
  • 第二種方法,批量為某個包下的所有實(shí)體類設(shè)置別名星持,配置形式如下
<!-- 為com.demo.dao包下的所有實(shí)體類配置別名抢埋,
MyBatis默認(rèn)的設(shè)置別名的方式就是去除類所在的包后的簡單的類名,
比如com.demo.dao.User這個實(shí)體類的別名就會被設(shè)置成User
 -->
<typeAliases>
        <package name="com.demo.dao"/>
</typeAliases>

代碼例子說明

  • 沒有配置前的mapper文件夾的xml文件:如UserDao對應(yīng)的UserMapper.xml文件如下
<?xml version="1.0" encoding="UTF-8" ?>   
<!DOCTYPE mapper   
PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"  
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="com.demo.dao.UserDao">
 
    <select id="findUserById" resultType="com.demo.entity.User">
        select * from user where id = #{id}
    </select>
    
    <insert id="addUser" parameterType="com.demo.entity.User" useGeneratedKeys="true" keyProperty="id">
        insert into user(name,password,age) values(#{name},#{password},#{age})
    </insert>
    
    <delete id="deleteUser" parameterType="int">
        delete from user where id = #{id}
    </delete>
    
    <update id="updateUser" parameterType="com.demo.entity.User">
        update user set name = #{name}, password = #{password}, age = #{age} where id = #{id}
    </update>
 
</mapper>

從這個配置文件中,我們可以看到<select>督暂、<insert>和<update>三個標(biāo)簽元素的resultType都是User對象揪垄,需要設(shè)置這個User對象的類全限定名,即packname.classname逻翁。
我們發(fā)現(xiàn)一個問題饥努,那就是這個類名,我們需要寫多次八回,如果要改這個類名的話酷愧,我們需要在多個地方進(jìn)行修改驾诈。很明顯,這樣配置的話很容易造成修改上的遺漏溶浴,同時也書寫上也比較麻煩乍迄。因此,MyBatis為我們提供了一個簡單方便的配置方法士败,那就是使用<typeAliases>標(biāo)簽元素闯两,給實(shí)體類設(shè)置一個別名。

<?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="mysql.properties">
        <property name="username" value="root"/>
        <property name="password" value="root"/>
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/demo?characterEncoding=utf-8"/>
    </properties>
 
    <settings>
        <setting name="logImpl" value="LOG4J" />
    </settings>
    
    <typeAliases>
        <typeAlias alias="User" type="com.demo.entity.User"/> 
    </typeAliases>
 
    <!-- 和spring整合后 environments配置將廢除 -->
    <environments default="development">
        <environment id="development">
            <!-- 使用jdbc事務(wù)管理 -->
            <transactionManager type="JDBC" />
            <!-- 數(shù)據(jù)庫連接池 -->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}" />
                <property name="url" value="${url}" />
                <property name="username" value="${username}" />
                <property name="password" value="${password}" />
            </dataSource>
        </environment>
    </environments>
 
    <mappers>
        <mapper resource="com\demo\resource\mapper\UserMapper.xml" />
    </mappers>
 
</configuration>

如上所示谅将,我們在原來的mybatis配置文件中增加了<typeAliases>標(biāo)簽漾狼,并將com.demo.dao.User這個實(shí)體類重命名為User,然后我們在mapper配置文件中就可以如下使用了饥臂。

備注:這里需要注意的是逊躁,typeAliases配置需要放置在settings之后,否則會出異常S缥酢;骸!

<?xml version="1.0" encoding="UTF-8" ?>   
<!DOCTYPE mapper   
PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"  
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="com.demo.dao.UserDao">
 
    <select id="findUserById" resultType="User">
        select * from user where id = #{id}
    </select>
    
    <insert id="addUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
        insert into user(name,password,age) values(#{name},#{password},#{age})
    </insert>
    
    <delete id="deleteUser" parameterType="int">
        delete from user where id = #{id}
    </delete>
    
    <update id="updateUser" parameterType="User">
        update user set name = #{name}, password = #{password}, age = #{age} where id = #{id}
    </update>
 
</mapper>

這樣即使實(shí)體類名修改了猛们,所需要修改的地方也只有一處念脯,便于集中管理.

在具體項(xiàng)目中,實(shí)體類是非常多的弯淘,所有更多時候我們需要批量為某個包下的所有實(shí)體類設(shè)置別名,所以只要在上面配置單個實(shí)體類的別名的地方吉懊,改成批量配置別名的方式即可庐橙,如下圖

 <typeAliases>
        <!-- 為實(shí)體類com.demo.entity.User配置一個別名User -->
        <!-- <typeAlias type="com.demo.entity.User" alias="User"/> -->
        <!-- 為com.demo.entity包下的所有實(shí)體類配置別名,MyBatis默認(rèn)的設(shè)置別名的方式就是去除類所在的包后的簡單的類名
        比如com.demo.entity.User這個實(shí)體類的別名就會被設(shè)置成User
         -->
        <package name="com.demo.entity"/>
    </typeAliases>

參考了此處的文章:
https://blog.csdn.net/majinggogogo/article/details/71503263

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末借嗽,一起剝皮案震驚了整個濱河市态鳖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌恶导,老刑警劉巖浆竭,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異惨寿,居然都是意外死亡邦泄,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門裂垦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來顺囊,“玉大人,你說我怎么就攤上這事蕉拢√靥迹” “怎么了诚亚?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長午乓。 經(jīng)常有香客問我站宗,道長,這世上最難降的妖魔是什么益愈? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任梢灭,我火速辦了婚禮,結(jié)果婚禮上腕唧,老公的妹妹穿的比我還像新娘或辖。我一直安慰自己,他們只是感情好枣接,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布颂暇。 她就那樣靜靜地躺著,像睡著了一般但惶。 火紅的嫁衣襯著肌膚如雪耳鸯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天膀曾,我揣著相機(jī)與錄音县爬,去河邊找鬼。 笑死添谊,一個胖子當(dāng)著我的面吹牛财喳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播斩狱,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼耳高,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了所踊?” 一聲冷哼從身側(cè)響起泌枪,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎秕岛,沒想到半個月后碌燕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡继薛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年修壕,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惋增。...
    茶點(diǎn)故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡叠殷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出诈皿,到底是詐尸還是另有隱情林束,我是刑警寧澤像棘,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站壶冒,受9級特大地震影響缕题,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜胖腾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一烟零、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧咸作,春花似錦锨阿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至桐智,卻和暖如春末早,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背说庭。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工然磷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人刊驴。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓姿搜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親捆憎。 傳聞我的和親對象是個殘疾皇子驾凶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1. 簡介 1.1 什么是 MyBatis 璧眠? MyBatis 是支持定制化 SQL布持、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 5,520評論 0 4
  • 小樣补履,祝你幸福 當(dāng)文字落在紙上時瞬沦,又到了炎炎夏日太伊。和你分開已經(jīng)多年,不知你的近況逛钻,只希望你過的比我好僚焦,祝你...
    慣看春秋閱讀 387評論 0 1
  • 我輕輕登上滄海邊的礁石上,瞭望大海曙痘。水波輕輕蕩漾芳悲,像一條綠絲帶般輕輕的拂過立肘。對面的山島聳立著,樹木在上面正默默地汲...
    智九云閱讀 475評論 1 4
  • 每近春節(jié),我都會把我這一年的朋友圈都翻閱一遍肮韧,看看來時的路融蹂,不忘初心,然后有儀式感地跟過去告別弄企,縱情向前超燃。雖然人類...
    老藏漂小康閱讀 314評論 0 1