數據庫字段名稱與實體類屬性不一致的處理措施
解決方案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>
用as關鍵字聲明別名
1
|
select
字段1
as
字段1別名,字段2
as
字段2別名
from
表名
as
表別名
|
---------------------
作者:haokinglong_java
來源:CSDN
原文:https://blog.csdn.net/hjl021/article/details/79069276
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!