數據庫字段名稱與實體類屬性不一致的處理措施
解決方案1
設定顯示列的別名,讓顯示列的別名與實體類的屬性名相同
優點: 操作簡單,容易理解
缺點: 當這樣的語句出現的次數過多的時候,到時冗餘代碼增多,這些別名不能重用
適用場景: 語句出現較少的查詢時列較少的時候
-->
<selectid="selectStudentAll1" resultType="stu">
selectid ,name stuName ,age stuAge from t_student
</select>
<!--
解決方案2
使用resultMap自定義封裝規則
優點: 這個封裝規則可以被重複的使用,解決解決方案1的缺點
缺點: 需要額外定義一個封裝對象並對它進行維護
適用場景: 語句出現次數較多大於等於2次 字段較多的時候
-->
<!-- 自定義結果封裝規則
屬性
type 用於指定將結果集 封裝到哪個實體類中,取值爲類的全限定名或在主配置文件中定義的別名
id 這個自定義規則的唯一標識,不能與其他的resultMap相同,用語給select標籤中的resultMap屬性引用
-->
<resultMap type="stu"id="stuMap">
<!--
用於主鍵列數據映射
屬性
column 指定結果集中的顯示列的列名
property 指定 resultMap標籤中type所指定的這個實體類中的屬性名
MyBatis會將column所指定的這個列的數據,設置到propety所指定的這個屬性中
-->
<idcolumn="id" property="id" />
<!--普通列數據映射 -->
<resultcolumn="name" property="stuName"/>
<resultcolumn="age" property="stuAge"/>
</resultMap>
<selectid="selectStudentAll2" resultMap="stuMap">
select* from t_student
</select>
<!--
解決方案3
使用Map集合封裝結果集中的數據,MyBatis會使用顯示列的名字作爲Map集合的key,使用顯示列所對應的數據,作爲Map集合的value
將每一條數據分別封裝到不同的Map集合中
優點: 簡單,可以重複使用,又無需額外維護封裝規則
缺點: 破壞了ORM的映射規則
適用場景: 進行多表查詢時,注意:多個表中的可能會出現相同的列名,這樣不會導致錯誤但是會導致Map集合中的數據不準確
-->
<selectid="selectStudentAll3" resultType="map">
select* from t_student
</select>