溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Mybatis的@ResultMap,@Results,@Result注解怎么使用

發(fā)布時(shí)間:2021-12-02 09:03:53 來(lái)源:億速云 閱讀:1541 作者:iii 欄目:開(kāi)發(fā)技術(shù)

本篇內(nèi)容主要講解“Mybatis的@ResultMap,@Results,@Result注解怎么使用”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“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)的列名:

Mybatis的@ResultMap,@Results,@Result注解怎么使用

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)多表查詢的sqlmapper

  • fetchType會(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=""))

到此,相信大家對(duì)“Mybatis的@ResultMap,@Results,@Result注解怎么使用”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI