resultMap結果集映射解決屬性名和欄位不一致問題
解決屬性名和欄位名不一致的問題
1.出現的問題
資料庫中的欄位

新建一個項目,拷貝之前的,測試實體類與資料庫欄位不一致的情況
public class User {
private int id;
private String name;
private String password;
}
現在測試出現問題



解決方法:
方法一:最簡單的在sql語句中直接起別名
<select id="getUserById" resultType="user">
select id,name,pwd as password from mybatis.user where id = #{id}
</select>
方法二就是使用下面的resultMap
2、resultMap
結果集映射
首先定義一個resultMap的標籤做資料庫欄位與實體類屬性的映射(註:可以只映射不相同的欄位與屬性)
<!--resultMap叫結果集映射,
就是實現將sql查詢出來的結果集映射到實體類里-->
<resultMap id="UserMap" type="User">
<!--column資料庫的欄位,property實體類中的屬性-->
<!--resultMap可以什麼哪個欄位不一樣轉哪個欄位,
並不用資料庫列和實體類屬性全部寫完-->
<!-- <result column="id" property="id"/>
<result column="name" property="name"/>-->
<result column="pwd" property="password"/>
</resultMap>
然後select標籤取引用它,如下:
<select id="getUserById" resultMap="UserMap">
select * from mybatis.user where id = #{id}
</select>
這就是結果集映射的用法。
下面時截取的Mybatis官網上的一些針對resultMap的重要資訊:
resultMap元素是 MyBatis 中最重要最強大的元素。- ResultMap 的設計思想是,對簡單的語句做到零配置,對於複雜一點的語句,只需要描述語句之間的關係就行了。
- 相同的欄位和屬性名不用做映射也可。
- 如果這個世界總是這麼簡單就好了。(哈哈哈哈)
這篇文章的源碼在Mybatis-study工程的mybatis-03模組下!,後面會給出碼雲地址。

