mybatis select 結果集是 map 寫法

<select id="selectPerson" parameterType="int" resultType="hashmap">
  SELECT * FROM PERSON WHERE ID = #{id}
</select>

這個語句被稱做 selectPerson,接受一個 int(或 Integer)類型的參數,並返回一個 HashMap 類型的對象,其中的鍵是列名,值即是結果行中的對應值。html

若是是簡單的 返回,就能夠不用寫 結果集 resultMap 對象了。sql

更多使用參考mybatis 中文文檔;mybatis

http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.htmlapp

或者是 :this

<select id="selectUsers" resultType="map">
  select id, username, hashedPassword
  from some_table
  where id = #{id}
</select>

 

這樣一個語句簡單做用於全部列被自動映射到 HashMap 的鍵上,這由 resultType 屬性 指定。這在不少狀況下是有用的,可是 HashMap 不能很好描述一個領域模型。那樣你的應 用程序將會使用 JavaBeans 或 POJOs(Plain Old Java Objects,普通 Java 對象)來做爲領域 模型。MyBatis 對二者都支持。看看下面這個 JavaBean:xml

 

package com.someapp.model;
public class User {
  private int id;
  private String username;
  private String hashedPassword;
  
  public int getId() {
    return id;
  }
  public void setId(int id) {
    this.id = id;
  }
  public String getUsername() {
    return username;
  }
  public void setUsername(String username) {
    this.username = username;
  }
  public String getHashedPassword() {
    return hashedPassword;
  }
  public void setHashedPassword(String hashedPassword) {
    this.hashedPassword = hashedPassword;
  }
}

 

基於 JavaBean 的規範,上面這個類有 3 個屬性:id,username 和 hashedPassword。這些 在 select 語句中會精確匹配到列名。htm

這樣的一個 JavaBean 能夠被映射到結果集,就像映射到 HashMap 同樣簡單。對象

<select id="selectUsers" resultType="com.someapp.model.User">
  select id, username, hashedPassword
  from some_table
  where id = #{id}
</select>

 

這樣就不須要些resultMap 了。文檔

這些狀況下,MyBatis 會在幕後自動建立一個 ResultMap,基於屬性名來映射列到 JavaBean 的屬性上。若是列名沒有精確匹配,你能夠在列名上使用 select 字句的別名(一個 基本的 SQL 特性)來匹配標籤。好比:get

<select id="selectUsers" resultType="User">
  select
    user_id             as "id",
    user_name           as "userName",
    hashed_password     as "hashedPassword"
  from some_table
  where id = #{id}
</select>
相關文章
相關標籤/搜索