Mybatis查詢返回特定屬性的集合List<Map>而非對象的集合

SQL查詢中,經常需要查詢表中符合條件的行的列表,通常是以java對象的形式返回,特別是在後臺管理型的系統中,前端顯示列表是最常見的查詢之一。
Mybatis是常用的持久層框架,有很多優點。列表查詢示例如下:

  /**
   * 根據map中的參數查詢用戶
   * @param map
   * @return
   */
  public List<User> findByMap(Map<String,Object> map);

xml示例如下:

<select id="findByMap" resultMap="userResultMap">
  <!-- 省略 -->
</select>

但是,在列表查詢,特別前端是下拉框樣式的時候,只需要id和name這樣的參數,而其他的參數都是沒有必要的。這個時候,返回List<User>這樣的東西未免有些浪費了。
解決辦法是直接返回List<Map>,示例如下:

  /**
   * 以List<Map>的形式獲取用戶的列表
   * map中需要包含:id,name
   * 返回值形如:{"id" : "1", "name" : "ying"}, {"id" : "2", "name" : "hutailang"}
   * @param map
   * @return
   */
  public List<Map> findForMap(Map<String,Object> map);

xml示例如下:

<select id="findForMap" parameterType="map" resultType="map">
  select id, name
  from user
  where .... <!-- 省略where的具體內容 -->
</select>

總結:這種做法對於java代碼來說或許沒有什麼用處,循環List<User>比循環List<Map>更方便,但對於前端頁面來說,這無疑會節省不少的時間和資源——前端不需要知道你返回的是什麼對象,它只是使用key-value這樣的形式去取值而已。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章