一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - MyBatis-Plus 查詢返回實(shí)體對(duì)象還是map

MyBatis-Plus 查詢返回實(shí)體對(duì)象還是map

2020-09-02 00:30gblfy Java教程

這篇文章主要介紹了MyBatis-Plus 查詢返回實(shí)體對(duì)象還是map,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

在常見(jiàn)場(chǎng)景下:返回?cái)?shù)據(jù)建議使用map,不建議使用實(shí)體對(duì)象

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  /**
   * 1. 名字包含雨并且年齡小于40
   * sql:name like '%雨%' and age < 40
   * <p>
   * 應(yīng)用場(chǎng)景:
   * 當(dāng)表字段非常多,但是你只需要查詢少數(shù)幾列,
   * 沒(méi)必要返回的泛型為實(shí)體的list,如果返回的泛型為實(shí)體,絕大多字段都是null,這樣做不優(yōu)雅
   * 用返回泛型為map建議使用
   */
  @Test
  public void selectByWrapperMaps() {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.like("name", "雨").lt("age", 40);
    //建議使用
    List<Map<String, Object>> userList = userMapper.selectMaps(queryWrapper);
    //不建議使用
//    List<User> userList = userMapper.selectList(queryWrapper);
    userList.forEach(System.out::println);
  }
  /*
    sql形式:SELECT id,name,age,email,manager_id,create_time FROM user WHERE name LIKE ? AND age < ?
   */
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  /**
   * 按照直屬上級(jí)分組,查詢每組的平均年齡。最大年齡、最小年齡。
   * 并且只取年齡總和小于500的組
   * select avg(age) avg_age,min(age) min_age,max(age) max_age from user
   * group by manager_id
   * having sum(age) < 500 ;
   */
 
  @Test
  public void selectByWrapperMaps2() {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.select("avg(age) avg_age", "min(age) min_age", "max(age) max_age")
        .groupBy("manager_id")
        .having("sum(age) < {0}", 500);
 
    List<Map<String, Object>> userList = userMapper.selectMaps(queryWrapper);
    userList.forEach(System.out::println);
//  sql形式:SELECT avg(age) avg_age,min(age) min_age,max(age) max_age FROM user
//  GROUP BY manager_id HAVING sum(age) < ?
}

遇到了這個(gè)問(wèn)題,迷惘,遂問(wèn)大神,大神曰:如果是組合體,就用map;如果是單體實(shí)體,就用實(shí)體。實(shí)體類對(duì)應(yīng)單表,多表返回用map。

我想省事全用map,但是那我學(xué)了面向?qū)ο笫怯脕?lái)干嘛的?

別人在調(diào)用你這個(gè)接口的時(shí)候 ,如果返回類型是個(gè)map,那他需要點(diǎn)進(jìn)去,看你程序的具體實(shí)現(xiàn)才能知道怎么接收,賦值,那無(wú)疑是為別人添加了巨大麻煩,尤其是當(dāng)你的代碼不夠規(guī)范的時(shí)候。再有,如果你代碼寫(xiě)的很爛,豈不是自己去讓別人吐槽你。如果你返回的是一個(gè)對(duì)象實(shí)體,那他就可以看到你返回的是什么,別人也就懶得再去看你代碼了,也為他省了很多事。

新技術(shù)或者新思想 并不等于 省事 ,很多時(shí)候 有捷徑,但是,我們就是不能去走,為什么?說(shuō)不定走到哪里就會(huì)遇到一個(gè)坑,或者直接是懸崖也不一定。

其他回答:

1.每張表都要對(duì)應(yīng)一個(gè)實(shí)體 這樣才能映射嘛 多表聯(lián)合查詢的結(jié)果可以返回一個(gè)hashmap處理 視情況而定。

2.如果你是多表聯(lián)合查詢,然后你又覺(jué)得返回方式用map很麻煩的話,你可以自己建立個(gè)實(shí)體類,這個(gè)實(shí)力類中包含有你所要查詢的多表中的字段,然后在mybatis中用typeAlias指定一下,到時(shí)候,就能像用一般的實(shí)體類那樣使用就好。

3.如果類型指定為hashMap只是針對(duì)返回一條記錄的情況吧,如果返回多條記錄類型就不能指定為hashMap了?多個(gè)結(jié)果集他會(huì)給你放入一個(gè)List,你在javacode中用selectList這樣的代碼返回的是list,當(dāng)然這個(gè)list中可能是實(shí)體類也可能是hashmap。

到此這篇關(guān)于MyBatis-Plus 查詢返回實(shí)體對(duì)象還是map的文章就介紹到這了,更多相關(guān)MyBatis-Plus 查詢返回內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/weixin_40816738/article/details/93381620

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 性色老女人 | 久久久久久久尹人综合网亚洲 | 欧美又大又粗又爽视频 | 五月一区二区久久综合天堂 | xx欧美老妇| 3d欧美人与禽交 | 精品福利一区二区免费视频 | 国产人妖xxxxx免费看 | 欧美一区二区三区四区五区六区 | 侮辱丰满美丽的人妻 | 经典三级四虎在线观看 | 国产精品成人在线播放 | 国产精品福利在线观看免费不卡 | 小小水蜜桃免费影院 | 地址二地址三2021变更 | 92国产福利久久青青草原 | 日本高清在线观看天码888 | 欧美1区 | 免费av在线视频 | 免费在线观看日本 | 日本在线观看视频网站 | 亚洲精品乱码蜜桃久久久 | 青青草在线观看 | 午夜福利视频极品国产83 | 久久88综合 | 国产欧美日韩专区毛茸茸 | 欧美视频黑鬼大战白妞 | 免费特黄一区二区三区视频一 | 国产成人福利美女观看视频 | 白丝爆动漫羞羞动漫软件 | 草草在线视频 | 公妇乱淫在线播放免费观看 | 日本免费一区二区三区a区 日本免费三片在线观看 | 欧美在线视频免费播放 | 黄瓜污视频 | 日本免费在线观看 | 国产精品成人网红女主播 | 性xxxx直播放免费 | 日本红色高清免费观看 | 92精品国产成人观看免费 | 777奇米影视一区二区三区 |