1. 程式人生 > >myBatis學習筆記(3)——實體屬性名與表字段名不匹配問題

myBatis學習筆記(3)——實體屬性名與表字段名不匹配問題

問題

    <select id="getUser" parameterType="String"
        resultType="User">
        select * from user where username=#{username}
    </select>
  • 這是對映檔案的配置,myBatis在查詢出結果之後,會幫我們把查詢結果一一對應地填充到User物件中
  • 但是,它怎麼知道如何去對應查詢出來的欄位和屬性呢?只有在實體的屬性名和表的欄位名相同時,才能自動一一對應。
  • 那麼,如果屬性名和表的欄位名不一樣怎麼辦?有兩種解決方案

解決方案

現有實體類Order:
這裡寫圖片描述
資料庫表orders:
這裡寫圖片描述

  • 解決方案一
    <select id="getOrder" parameterType="int"
        resultType="Order">
        select order_id  id,order_name orderName from orders where order_id=#{id}
    </select>

查詢的時候使用別名,就可以解決

  • 解決方案二:
    <!-- 配置一個對映關係 -->
    <resultMap
type="Order" id="orderResultMap">
<id property="id" column="order_id"/> <result property="orderName" column="order_name"/> </resultMap> <!-- 查詢結果集引用配好的對映關係 --> <select id="getOrder" parameterType="int" resultMap="orderResultMap"> select order_id ,order_name from orders where order_id=#{id} </select
>
  • resultMap中,id標籤專門為主鍵服務,當然,全部都用result
  • property為實體類屬性
  • column為表的列名