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

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

解決方案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>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章