Mybatis之@ResultMap,@Results,@Result注解的使用
Mybatis注解@Results、@Result、@ResultMap
問(wèn)題
在使用mybatis時(shí)發(fā)現(xiàn),mybatis能自動(dòng)匹配實(shí)體名和數(shù)據(jù)庫(kù)字段名相同的字段。當(dāng)有實(shí)體名與數(shù)據(jù)庫(kù)的字段名不同時(shí)該如何解決??
數(shù)據(jù)庫(kù)的表對(duì)應(yīng)的列名:

springboot項(xiàng)目中建的實(shí)體類為:
public class MapModel {
private Long key;
private String value;
//省略getter、setter方法
}
方法一
給查詢字段另起名對(duì)應(yīng)實(shí)體類的名稱:
@Select("SELECT province_id as key , province_name as value FROM `j_position`")
public List<MapModel> provinceName();
方法二
使用@Results、@Result、@ResultMap注解:
@Select("SELECT province_id, province_name FROM `j_position`")
@Results(id="resultMap1" ,value = {
@Result(property = "key",column = "province_id"),
@Result(property = "value",column ="province_name")
})
public List<MapModel> provinceName();
其中定義的id="resultMap1"可以使用
@ResultMap("resultMap1)
@Select("SELECT province_id, province_name FROM `j_position` where province_name=#{name}")
public List<MapModel> provinceName(String name);
推薦使用方法二!
mybatis注釋使用
resultMap對(duì)應(yīng)的注釋,及對(duì)應(yīng)注解Results、Result、One、Many的使用
有一部分建立在我上一個(gè)博客,mybatis注釋使用(單表查詢),如果那里看不懂了,建議看下我上一個(gè)博客(里面所有的配置文件,接口,數(shù)據(jù)庫(kù)的創(chuàng)建都有說(shuō)明)
<resultMap>對(duì)應(yīng)的注解:
1.@Results注解
代替的是標(biāo)簽<resultMap >
該注解中可以使用單個(gè)@Result注解,也可以使用@Result集合
@Results({@Result(),@Result()})或@Results(@Result())
注意:使用注解是若報(bào)出org.apache.ibatis.binding.BindingException:Invalid bound statement (not found):接口全類名.方法名
可能是使用@Results注解時(shí)忘記使用@Select注解
2.@Resutl注解
代替了 <id>標(biāo)簽和<result>標(biāo)簽
@Result 中 屬性介紹:
column數(shù)據(jù)庫(kù)的列名Property需要裝配的屬性名one需要使用的@One注解(@Result(one=@One)()))many需要使用的@Many注解(@Result(many=@many)()))
3.@One注解(一對(duì)一)
代替了<assocation>標(biāo)簽,是多表查詢的關(guān)鍵,在注解中用來(lái)指定子查詢返回單一對(duì)象。
@One注解屬性介紹:
select指定用來(lái)多表查詢的sqlmapperfetchType會(huì)覆蓋全局的配置參數(shù)lazyLoadingEnabled。。
使用格式:
@Result(column=" ",property="",one=@One(select=""))
4.@Many注解(多對(duì)一)
代替了<Collection>標(biāo)簽,是是多表查詢的關(guān)鍵,在注解中用來(lái)指定子查詢返回對(duì)象集合。
注意:聚集元素用來(lái)處理“一對(duì)多”的關(guān)系。需要指定映射的Java實(shí)體類的屬性,屬性的javaType(一般為ArrayList)但是注解中可以不定義;
使用格式:
@Result(property="",column="",many=@Many(select=""))
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot啟動(dòng)時(shí)自動(dòng)執(zhí)行代碼的幾種實(shí)現(xiàn)方式
這篇文章主要給大家介紹了關(guān)于SpringBoot啟動(dòng)時(shí)自動(dòng)執(zhí)行代碼的幾種實(shí)現(xiàn)方式,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-02-02
java 獲取request中的請(qǐng)求參數(shù)代碼詳解
這篇文章主要介紹了java 獲取request中的請(qǐng)求參數(shù)的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-05-05
java設(shè)計(jì)模式責(zé)任鏈模式原理案例詳解
一個(gè)事件需要經(jīng)過(guò)多個(gè)對(duì)象處理是一個(gè)挺常見(jiàn)的場(chǎng)景,譬如采購(gòu)審批流程,請(qǐng)假流程,軟件開(kāi)發(fā)中的異常處理流程,web請(qǐng)求處理流程等各種各樣的流程,可以考慮使用責(zé)任鏈模式來(lái)實(shí)現(xiàn)2021-09-09
使用curator實(shí)現(xiàn)zookeeper鎖服務(wù)的示例分享
這篇文章主要介紹了使用curator實(shí)現(xiàn)zookeeper鎖服務(wù)的示例,需要的朋友可以參考下2014-02-02
Spring創(chuàng)建bean的幾種方式及使用場(chǎng)景
本文主要介紹了Spring創(chuàng)建bean的幾種方式及使用場(chǎng)景,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04

