您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“Mybatis中resultMap的Colum和property怎么用”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Mybatis中resultMap的Colum和property怎么用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
當我們的數據庫字段與實體類的屬性不一致時,就需要使用該標簽進行一一映射。
<resultMap id="這個resultMap的id" type="對應實體類的全限定類名"> <id column="id" property="id"></id> <result column="username" property="name"></result> <result column="author" property="author"></result> <result column="number" property="number"></result> ............. colum對應數據庫的字段,property對應實體類的屬性 </resultMap>
他表示對數據按照什么樣的規則進行一一映射,如:
<!-- 根據編號查找書籍--> <select id="SelectbooksByNumber" parameterType="String" resultMap="名字"> select * from book where number=#{number}; </select>
上面的查找結果按照你給的resultMap的對應規則進行映射。
需要注意的是你sql語句查出來的列名稱是別名,那你就要填別名,就不是你數據庫的列名稱了。
返回結果:User
User中含有Role屬性集合 一對多的關系
JavaType是用來指定pojo中屬性的類型
同樣和一對一 一樣需要注意列名稱。
返回結果:User
User中含有Role屬性集合 一對多的關系
JavaType是用來指定pojo中屬性的類型,
ofType指定的是 映射到list集合屬性中pojo的類型
其中Role屬性集合為List
pojo
public class User implements Serializable { private Integer id; private String username; private String password; private String salt; private Integer status; // 用戶狀態 0: 正常 1:禁用 2:鎖定 //角色集合 private List<Role> roles;
role表
user表
user與role的映射表
首先,先看看這張圖,看能不能一下看明白:
id
:命名空間唯一標識,可以被用來引用這條語句
parameterType
:將會傳入這條語句的參數類的完全限定名或者別名
resultType
:從這條語句要返回的期望類型的類的完全限定名或別名(這里注意下集合類型,應該是集合可以包含的類型,不能是集合本身),重要:使用resultType或resultMap,但不能同時使用。
resultMap
:命名引用外部的resultMap,其名稱要和外部的resultMap元素的ID名稱一致,用于映射其結果到實體類指定對象中。
①當去select一張表時,可以使用resultType,這些情況下,MyBatis會在幕后自動創建一個ReusltMap,基于屬性名來映射到JavaBean屬性上
②所以在使用resultMap時,就必須要寫上resultMap相對應的xml
③為了方便我們開發出錯,在沒有特別要求的情況下,column名可以完全和property名稱一致,否則當我們沒有對應上的時候,數據庫匹配不到,會將某某參數值變為大寫,導致我們本來獲取小寫的參數名,結果沒有獲取到,后臺報錯,得不償失啊!
sql中比如,有 andm.id = #{id ,jdbcType=VARCHAR } 要標明jdbcType為什么呢?
解釋:
如果你映射了一個javabean,MyBatis通常可以斷定類型(項目里好多都要寫,我也不知道為啥),然而,如果你映射到的是比如:HashMap,那么應該明確指定的jdbcType來保證所需的行為
讀到這里,這篇“Mybatis中resultMap的Colum和property怎么用”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。