1. 程式人生 > 其它 >Mybatis返回一個實體類中部分屬性

Mybatis返回一個實體類中部分屬性

需求

  • 最近遇到一個事情,前端某個請求只需要後端實體類中的某幾個屬性,但是資料庫中卻定義了其他屬性,我們如何把其他屬性的值排除在外,只獲取我們需要的屬性值呢?
  • 即原本資料庫欄位,有很多,但是我們只需要某些欄位

解決

方法一:自己定義一個resultMap

  • xml中:type=“java.util.HashMap”
    <!-- 會議總覽-->
    <resultMap type="java.util.HashMap" id="RelateResult2">
        <result property="meetingName"    column="meeting_name"    />
        <result property="beginTime"    column="begin_time"    />
        <result property="meetingForm"    column="meeting_form"    />
        <result property="usePlatform"    column="use_platform"    />
        <result property="meetingStatus"    column="meeting_status"    />
    </resultMap>
  • sql語句:只返回需要欄位即可
<select id="selectMyList2" resultMap="RelateResult2">-- 會議總覽
        SELECT a.meeting_name,a.begin_time,a.meeting_form,a.use_platform,a.meeting_status  FROM meeting_record as a INNER JOIN meeting_participant_list as b ON a.meeting_id = b.meeting_id where b.participant_name=#{name}
    </select>
  • 同時把對應的service和mapper檔案裡面的對應的方法返回值型別改成List<Map<String, Object>>
  • mapper返回字典物件
  • 新建的是resultMap

報錯:resultMap中property的指定值爆紅

方法二:很笨的方法。重新新建一個物件實體,該實體檔案的欄位與要返回的 “部分欄位” 一一對應即可

  • resultMap 的type=實體類 指向一個檔案,該檔案為新建實體類,裡面是要返回的 “部分欄位”
  • mapper返回實體類物件
  • 新建的是實體類