<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>