數據庫字段名稱與實體類屬性不一致的處理措施



數據庫字段名稱與實體類屬性不一致的處理措施

解決方案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
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM