Mybatis之@ResultMap,@Results,@Result注解的使用
Mybatis注解@Results、@Result、@ResultMap
問題
在使用mybatis時(shí)發(fā)現(xiàn),mybatis能自動(dòng)匹配實(shí)體名和數(shù)據(jù)庫字段名相同的字段。當(dāng)有實(shí)體名與數(shù)據(jù)庫的字段名不同時(shí)該如何解決??
數(shù)據(jù)庫的表對(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ù)庫的創(chuàng)建都有說明)
<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ù)庫的列名Property
需要裝配的屬性名one
需要使用的@One注解(@Result(one=@One)()))many
需要使用的@Many注解(@Result(many=@many)()))
3.@One注解(一對(duì)一)
代替了<assocation>標(biāo)簽,是多表查詢的關(guān)鍵,在注解中用來指定子查詢返回單一對(duì)象。
@One注解屬性介紹:
select
指定用來多表查詢的sqlmapperfetchType
會(huì)覆蓋全局的配置參數(shù)lazyLoadingEnabled。。
使用格式:
@Result(column=" ",property="",one=@One(select=""))
4.@Many注解(多對(duì)一)
代替了<Collection>標(biāo)簽,是是多表查詢的關(guān)鍵,在注解中用來指定子查詢返回對(duì)象集合。
注意:聚集元素用來處理“一對(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)方式,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-02-02java 獲取request中的請(qǐng)求參數(shù)代碼詳解
這篇文章主要介紹了java 獲取request中的請(qǐng)求參數(shù)的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-05-05java設(shè)計(jì)模式責(zé)任鏈模式原理案例詳解
一個(gè)事件需要經(jīng)過多個(gè)對(duì)象處理是一個(gè)挺常見的場(chǎng)景,譬如采購審批流程,請(qǐng)假流程,軟件開發(fā)中的異常處理流程,web請(qǐng)求處理流程等各種各樣的流程,可以考慮使用責(zé)任鏈模式來實(shí)現(xiàn)2021-09-09使用curator實(shí)現(xiàn)zookeeper鎖服務(wù)的示例分享
這篇文章主要介紹了使用curator實(shí)現(xiàn)zookeeper鎖服務(wù)的示例,需要的朋友可以參考下2014-02-02Spring創(chuàng)建bean的幾種方式及使用場(chǎng)景
本文主要介紹了Spring創(chuàng)建bean的幾種方式及使用場(chǎng)景,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04