myBatis學習筆記(3)——實體屬性名與表字段名不匹配問題
阿新 • • 發佈:2019-01-23
問題
<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為表的列名