在MyBatis的映射中有column這么一個屬性,我一直以為它映射的是資料庫表中的列名,但經過學習發現他似乎映射的是SQL陳述句中的列名,或者說是查詢結果所得到的表的列名,
下面我們進行一個實驗,
首先我們有一張user表:

我還有一個物體類User,有著id、username、password三個屬性,
我們的UserMapper介面中有著獲取這張表單所有資料的方法,
我們現在在UserMapper.mxl中這樣寫:
<select id="getUsers" resultType="User"> select * from mybaties.user </select>
或者這樣寫:
<select id="getUsers" resultType="User"> select id, username, password from mybaties.user </select>
這兩句完全相同,我們去測驗一下看看結果:

成功獲取了所有資訊,
現在給password起個別名pwd,在UserMapper.mxl中這樣寫:
<select id="getUsers" resultType="User"> select id, username, password as pwd from mybaties.user </select>
此時我們再去運行:

我們會發現password竟然變成了null,
此時我們去配置一個結果映射,讓pwd映射到我們的屬性password:
<resultMap id="um" type="User"> <result property="password" column="pwd"/> </resultMap> <select id="getUsers" resultMap="um"> select id, username, password as pwd from mybaties.user </select>
測驗結果:

沒有問題,
得出結論:映射到屬性的欄位名是查詢結果的列名,而不是資料庫中已存在的表的列名,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/508881.html
標籤:其他
