欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2020年09月01日 10:50:58   作者:gblfy  
這篇文章主要介紹了MyBatis-Plus 查詢返回實(shí)體對(duì)象還是map,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

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

  /**
   * 1. 名字包含雨并且年齡小于40
   * sql:name like '%雨%' and age < 40
   * <p>
   * 應(yīng)用場(chǎng)景:
   * 當(dāng)表字段非常多,但是你只需要查詢少數(shù)幾列,
   * 沒必要返回的泛型為實(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 < ?
   */
  /**
   * 按照直屬上級(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è)問題,迷惘,遂問大神,大神曰:如果是組合體,就用map;如果是單體實(shí)體,就用實(shí)體。實(shí)體類對(duì)應(yīng)單表,多表返回用map。

我想省事全用map,但是那我學(xué)了面向?qū)ο笫怯脕砀陕锏模?/p>

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

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

其他回答:

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

2.如果你是多表聯(lián)合查詢,然后你又覺得返回方式用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)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Java自制一個(gè)一個(gè)Nacos

    使用Java自制一個(gè)一個(gè)Nacos

    Nacos是?Dynamic?Naming?and?Configuration?Service的首字母簡(jiǎn)稱,一個(gè)更易于構(gòu)建云原生應(yīng)用的動(dòng)態(tài)服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)管理平臺(tái),本文將嘗試用Java實(shí)現(xiàn)一個(gè)Nacos,感興趣的可以了解下
    2024-01-01
  • Java程序圖形用戶界面設(shè)計(jì)之容器JFrame

    Java程序圖形用戶界面設(shè)計(jì)之容器JFrame

    圖形界面(簡(jiǎn)稱GUI)是指采用圖形方式顯示的計(jì)算機(jī)操作用戶界面。與早期計(jì)算機(jī)使用的命令行界面相比,圖形界面對(duì)于用戶來說在視覺上更易于接受,本篇精講Java語(yǔ)言中關(guān)于圖形用戶界面的基本容器JFrame
    2022-02-02
  • java事務(wù)回滾失敗問題分析

    java事務(wù)回滾失敗問題分析

    這篇文章主要介紹了java事務(wù)回滾失敗問題分析,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • 詳解Spring與MyBatis的整合的方法

    詳解Spring與MyBatis的整合的方法

    這篇文章主要為大家詳細(xì)介紹了Spring與MyBatis的整合,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • SpringBoot 啟動(dòng)方法run()源碼解析

    SpringBoot 啟動(dòng)方法run()源碼解析

    這篇文章主要介紹了SpringBoot 啟動(dòng)方法run()源碼賞析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • 詳解eclipse項(xiàng)目中的.classpath文件原理

    詳解eclipse項(xiàng)目中的.classpath文件原理

    這篇文章介紹了eclipse項(xiàng)目中的.classpath文件的原理,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • Java?Agent探針技術(shù)詳解示例

    Java?Agent探針技術(shù)詳解示例

    這篇文章主要介紹了Java?Agent?探針技術(shù)詳情,Java?中的?Agent?技術(shù)可以讓我們無(wú)侵入性的去進(jìn)行代理,最常用于程序調(diào)試、熱部署、性能診斷分析等場(chǎng)景,下文更多相關(guān)資料,感興趣的小伙伴可以參考一下
    2022-06-06
  • Java8中的LocalDateTime你會(huì)使用了嗎

    Java8中的LocalDateTime你會(huì)使用了嗎

    LocalDateTime?是?Java?8?中日期時(shí)間?API?提供的一個(gè)類,在日期和時(shí)間的表示上提供了更加豐富和靈活的支持,本文就來講講LocalDateTime的一些具體使用方法吧
    2023-05-05
  • SpringBoot接口如何對(duì)參數(shù)進(jìn)行校驗(yàn)

    SpringBoot接口如何對(duì)參數(shù)進(jìn)行校驗(yàn)

    這篇文章主要介紹了SpringBoot接口如何對(duì)參數(shù)進(jìn)行校驗(yàn),在以SpringBoot開發(fā)Restful接口時(shí),?對(duì)于接口的查詢參數(shù)后臺(tái)也是要進(jìn)行校驗(yàn)的,同時(shí)還需要給出校驗(yàn)的返回信息放到上文我們統(tǒng)一封裝的結(jié)構(gòu)中
    2022-07-07
  • Java的三種代理模式簡(jiǎn)述

    Java的三種代理模式簡(jiǎn)述

    這篇文章主要簡(jiǎn)述Java的三種代理模式,java的代理模式主要包括靜態(tài)代理、動(dòng)態(tài)代理、Cglib代理,感興趣的小伙伴可以參考下面文章的具體內(nèi)容
    2021-09-09

最新評(píng)論