第四章关联映射
|----認識關聯映射:
介紹:
在以面向對象思想設計程序時,對象之間會產生關聯引用.比如學生與班級,學生對象含有班級類型的屬性,此時就會引用班級對象.將對象之間的關聯關系映射到數據庫,稱為關聯映射.
分析:[如何理解映射]
ORM映射:
對象模型 數據庫模型
對象 表
屬性 字段
引用關系 表關系[外鍵字段]
關聯映射的本質: 將對象與對象之間的引用,轉為數據表與數據表之間的引用[通過外鍵實現]
備注: 無論哪種關聯關系,數據表中的外鍵只能在多端添加
映射類型:
一對一(User-IDCard)
一對多(Department-Employee)
多對一(Student-Class)
多對多(Teacher - Student)
|-----實現關聯對象的映射:
實現關聯對象的映射:[代碼證明 第1條]
1.MyBatis自動完成普通屬性與表字段的映射: 將字段的值賦給同名的屬性.
2.MyBatis無法自動完成關聯對象與表字段的映射,需要手動設置映射關系,如下:
附加:
與resultType區別:
resultType: 只支持自動映射. 若含有關聯字段,無法完成映射,而映射為null.
: 支持自動映射及手動映射. 自動映射同resultType.
關聯映射標簽:
association標簽: 映射對象為單個對象時使用
collection標簽 :映射對象為多個對象時使用;
[Hibernate中有4個: one-to-one ,one-to-many,many-to-one,many-to-many]
備注:
無論是哪一種映射關系或查詢方案[嵌套結果/查詢],編寫映射文件時,只需考慮映射的屬性的類型.若是映射一個對象,則用association標簽. 若是映射多個對象,則用collection標簽.
關聯映射方案:
a.嵌套結果
b.嵌套查詢
|-----查詢方案: [代碼演示]
總述:
無論哪種映射關系,都支持 嵌套查詢 和 嵌套結果.
嵌套結果:[一條命令查詢所有]
嵌套查詢:[多條命令查詢]
<select id="listStu_2" resultMap="stumap_2">select * from student; </select> <select id="listClass" resultType="myClass">select * from class where id=#{id} </select> <resultMap id="stumap_2" type="student"><id column="sid" property="id"></id><result column="name" property="name"></result><result column="sex" property="sex"></result><result column="age" property="age"></result> <!-- <result column="class" property="myClass"></result>--><association property="myClass" column="class" select="listClass"></association> </resultMap>|-----開發含有關聯映射的項目:
關聯映射模型與單個對象模型操作中,主要區別在映射文件的查詢配置,其他方面[jar,配置文件,java程序]完全相同.
resultType只能實現普通屬性 與 數據表字段的自動映射,無法實現引用對象類型屬性與數據表字段的自動映射.
resultMap只能實現普通屬性 與 數據表字段的自動/手動映射,實現引用對象類型屬性與數據表字段
總結
- 上一篇: 第三章动态SQL
- 下一篇: 第五章spring框架基础