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

springboot項目中建的實體類為:
public class MapModel {
private Long key;
private String value;
//省略getter、setter方法
}
方法一
給查詢字段另起名對應(yīng)實體類的名稱:
@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對應(yīng)的注釋,及對應(yīng)注解Results、Result、One、Many的使用
有一部分建立在我上一個博客,mybatis注釋使用(單表查詢),如果那里看不懂了,建議看下我上一個博客(里面所有的配置文件,接口,數(shù)據(jù)庫的創(chuàng)建都有說明)
<resultMap>對應(yīng)的注解:
1.@Results注解
代替的是標(biāo)簽<resultMap >
該注解中可以使用單個@Result注解,也可以使用@Result集合
@Results({@Result(),@Result()})或@Results(@Result())
注意:使用注解是若報出org.apache.ibatis.binding.BindingException:Invalid bound statement (not found):接口全類名.方法名
可能是使用@Results注解時忘記使用@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注解(一對一)
代替了<assocation>標(biāo)簽,是多表查詢的關(guān)鍵,在注解中用來指定子查詢返回單一對象。
@One注解屬性介紹:
select指定用來多表查詢的sqlmapperfetchType會覆蓋全局的配置參數(shù)lazyLoadingEnabled。。
使用格式:
@Result(column=" ",property="",one=@One(select=""))
4.@Many注解(多對一)
代替了<Collection>標(biāo)簽,是是多表查詢的關(guān)鍵,在注解中用來指定子查詢返回對象集合。
注意:聚集元素用來處理“一對多”的關(guān)系。需要指定映射的Java實體類的屬性,屬性的javaType(一般為ArrayList)但是注解中可以不定義;
使用格式:
@Result(property="",column="",many=@Many(select=""))
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java操作MongoDB插入數(shù)據(jù)進行模糊查詢與in查詢功能
今天小編就為大家分享一篇關(guān)于Java操作MongoDB插入數(shù)據(jù)進行模糊查詢與in查詢功能,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12
IDEA 中 maven 的 Lifecycle 和Plugins&n
IDEA 主界面右側(cè) Maven 標(biāo)簽欄有同樣的命令,比如 install,既在 Plugins 中存在,也在 Lifecycle中存在,到底選哪個?二者又有什么區(qū)別呢?下面小編給大家介紹下IDEA 中 maven 的 Lifecycle 和Plugins 的區(qū)別,感興趣的朋友一起看看吧2023-03-03
java socket大數(shù)據(jù)傳輸丟失問題及解決
這篇文章主要介紹了java socket大數(shù)據(jù)傳輸丟失問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08

