您好,登錄后才能下訂單哦!
Mybatis不像Hibernate中那么自動(dòng)化,通過(guò)@Column注解或者直接使用實(shí)體類(lèi)的屬性名作為數(shù)據(jù)列名,而是需要自己指定實(shí)體類(lèi)屬性和
數(shù)據(jù)表中列名之間的映射關(guān)系,這一點(diǎn)讓用慣了Hibernate的人很不習(xí)慣,所幸經(jīng)過(guò)探索找到了建立映射關(guān)系的三種辦法,其中總也有比較 簡(jiǎn)單的。
首先先定義一個(gè)實(shí)體類(lèi),如下:
public class User implements Serializable { private Integer userId; private String userName; ...... }
1. 通過(guò)XML映射文件中的resultMap
這種方式是最常見(jiàn)的,類(lèi)似如下:
<mapper namespace="data.UserMapper"> <resultMap type="data.User" id="userResultMap"> <!-- 用id屬性來(lái)映射主鍵字段 --> <id property="id" column="user_id"/> <!-- 用result屬性來(lái)映射非主鍵字段 --> <result property="userName" column="user_name"/> </resultMap> </mapper>
通過(guò)里面的id標(biāo)簽和result標(biāo)簽來(lái)建立映射關(guān)系,由property和column分別指定實(shí)體類(lèi)屬性和數(shù)據(jù)表的列名。
2. 通過(guò)注解@Results和@Result
這兩個(gè)注解是與XML文件中的標(biāo)簽相對(duì)應(yīng)的:
@Results對(duì)應(yīng)resultMap
@Result對(duì)應(yīng)result
這兩個(gè)注解是應(yīng)用在方法的級(jí)別上的,也就是在mapper方法上,如下:
@Select("select * from t_user where user_name = #{userName}") @Results( @Result(property = "userId", column = "user_id"), @Result(property = "userName", column = "user_name") ) User getUserByName(@Param("userName") String userName);
缺點(diǎn):
由于注解是針對(duì)方法的,對(duì)于Mapper中的每個(gè)操作數(shù)據(jù)庫(kù)的方法都必須有相同的注解完成映射關(guān)系的建立,導(dǎo)致很多的配置是重復(fù)的;
如果要避免配置重復(fù)的問(wèn)題,可以采用在XML配置文件中配置這個(gè)resultMap,然后再@Result中通過(guò)id屬性引用這個(gè)resultMap,
但是這樣感覺(jué)很麻煩(由于使用了兩種配置方式),不如直接使用基于XML的resultMap配置方式;
3. 通過(guò)屬性配置完成映射
使用者最陌生的是通過(guò)配置屬性來(lái)完成映射,Mybatis給我們提供了一種映射方式,如果屬性的命名是遵從駝峰命名法的,數(shù)據(jù)列名遵從下劃線命名,
那么可以使用這種方式,類(lèi)似如下:
userName對(duì)應(yīng)user_name;
userId對(duì)應(yīng)user_id;
配置代碼如下:
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); Configuration configuration = new Configuration(); configuration.setMapUnderscoreToCamelCase(true); sqlSessionFactoryBean.setConfiguration(configuration);
4. 通過(guò)使用在SQL語(yǔ)句中定義別名完成映射
這種方式最直接,直接在SQL語(yǔ)句中建立別名來(lái)完成映射,如下:
@Select("select user_name as userName, user_id as userId from t_user where user_name = #{userName}") User getUserByName(@Param("userName") String userName);
總結(jié)
以上就是本文關(guān)于Mybatis中實(shí)體類(lèi)屬性與數(shù)據(jù)列表間映射方法介紹的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:Hibernate實(shí)現(xiàn)悲觀鎖和樂(lè)觀鎖代碼介紹、Hibernate核心思想與接口簡(jiǎn)介等。下面介紹本站幾款有趣的游戲,學(xué)習(xí)工作之余放松下心情也是很必要的。也希望大家多多支持億速云網(wǎng)站!
海濱消消樂(lè)app for android v1.13 安卓版
https://www.jb51.net/game/578587.html
一起來(lái)飛車(chē)app for android v1.5.1 安卓版
https://www.jb51.net/game/578688.html
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。