資料庫中表與表之間建立關係(一對多、多對多)
阿新 • • 發佈:2019-01-02
一、一對多的關係
例:公司與員工的關係,公司為一,公司員工為多,需要在多方建立外來鍵指向一方的主鍵。一對多讓兩個實體類之間相互表示
(1)一個公司裡面有多個員工。
private Set<yuangong> yuangongSet=new HashSet<yuangong>(); public Set<yuangong> getYuangongSet() { return yuangongSet; } public void setYuangongSet(Set<yuangong> yuangongSet) { this.yuangongSet=yuangongSet; }(2)一個員工只能屬於一個公司
配置一對多的對映關係,在對映檔案中配置
(1)在公司對映檔案中,表示所有員工
需要使用set標籤表示所有員工 set標籤的name屬性需要寫上在公司實體類裡面表示員工的set集合名稱,set標籤裡面還要包含一個key標籤,key標籤的column屬性需要寫實體類的外來鍵屬性名稱。 在key標籤的下面還需一個one-to-many標籤,標籤裡面的class屬性寫員工實體類的全路徑(2)在員工對映檔案中,表示所屬公司
建立核心配置檔案,把對映檔案引入到核心配置檔案中
<mapping resource="實體類配置檔案路徑"></mapping>二、多對多的關係
例:商品與訂單的關係,一個商品可以屬於多個訂單,一個訂單可以有多種商品。 使用者和角色的關係,一個角色可以包括多個使用者,一個使用者可以是多個角色。 建立一張使用者表和一張角色表,還需建立一張關係表,關係表至少有兩個外來鍵,分別指向兩張表的主鍵。1、與一對多類似,先是建立實體類,然後讓兩個實體類互相表示。
private Set<ShangpinEntity> shangpinEntitySet=new HashSet<ShangpinEntity>();
public Set<ShangpinEntity> getShangpinEntitySet() {
return shangpinEntitySet;
}
public void setShangpinEntitySet(Set<ShangpinEntity> shangpinEntitySet) {
this.shangpinEntitySet = shangpinEntitySet;
}
一種商品可以屬於多個訂單,使用set集合表示 //一種商品可以屬於多個訂單
private Set<DingdanEntity> dingdanEntitySet=new HashSet<DingdanEntity>();
public Set<DingdanEntity> getDingdanEntitySet() {
return dingdanEntitySet;
}
public void setDingdanEntitySet(Set<DingdanEntity> dingdanEntitySet) {
this.dingdanEntitySet = dingdanEntitySet;
}
2、配置對映關係
(1)基本配置略 (2)配置多對多關係 都是使用set標籤來表示彼此 在訂單配置檔案中配置如下標籤 <!--name="對應實體類中set集合的名稱" table="第三張表名(關係表)"--><set name="shangpinEntitySet" table="dingdan_shangpin">
<!--column="當前對映檔案在關係表中外來鍵名稱(也就是表當前主鍵)"-->
<key column="did"></key>
<!--class="商品表的實體類全路徑" column="商品表在關係表中的外來鍵名稱(也就是商品表的主鍵)"-->
<many-to-many class="domain.ShangpinEntity" column="sid"></many-to-many>
</set>
在商品配置檔案中配置如下標籤 <!--name="對應實體類中set集合的名稱" table="第三張表名(關係表)"-->
<set name="dingdanEntitySet" table="dingdan_shangpin">
<!--column="當前對映檔案在關係表中外來鍵名稱(也就是表當前主鍵)"-->
<key column="sid"></key>
<!--class="訂單表的實體類全路徑" column="訂單表在關係表中的外來鍵名稱(也就是訂單表的主鍵)"-->
<many-to-many class="domain.DingdanEntity" column="did"></many-to-many>
</set>
3、在核心配置檔案中引入對映檔案 <mapping resource="domain/DingdaEntity.hbm.xml"/>
<mapping resource="domain/ShangpinEntity.hbm.xml"/>