MyBatis resultMap 元素使用介紹
resultMap 元素是 MyBatis 中最重要最強大的元素,它可以讓我們從JDBC ResultSets 數據提取代碼中解放出來。
我們的程序更可能會使用 JavaBean 或 POJO(Plain Old Java Objects,普通老式 Java 對象)作為領域模型。請看下面這個 JavaBean:
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;
}
}
對應的映射關系是這樣的:
<select id="selectUsers" resultType="cn.mybatis.model.User">
select id, username, hashedPassword
from t_users
where id = #{id}
</select>
這些情況下,MyBatis 會在幕后自動創建一個 ResultMap,再基于屬性名來映射列到 JavaBean 的屬性上。
如果列名和屬性名沒有精確匹配,可以使用 resultMap 元素來幫忙:
<resultMap id="userResultMap" type="User">
<id property="id" column="user_id" />
<result property="username" column="user_name"/>
<result property="password" column="hashed_password"/>
</resultMap>
而在引用它的語句中使用 resultMap 屬性就行了(注意:我們去掉了 resultType 屬性)。比如:
<select id="selectUsers" resultMap="userResultMap">
select user_id, user_name, hashed_password
from t_users
where id = #{id}
</select>