数据库中表与表之间建立关系(一对多、多对多)

一、一对多的关系

例:公司与员工的关系,公司为一,公司员工为多,需要在多方建立外键指向一方的主键。


一对多让两个实体类之间相互表示


(1)一个公司里面有多个员工。

private Set yuangongSet=new HashSet();
public Set getYuangongSet()
{
return yuangongSet;
}
public void setYuangongSet(Set yuangongSet)
{
this.yuangongSet=yuangongSet;
}

(2)一个员工只能属于一个公司

private Gongsi gongsi;
public Gongsi getGongsi()
{
return gongsi;
}
public void setGongsi(Gongsi gongsi)
{
this.gongsi=gongsi;
}

配置一对多的映射关系,在映射文件中配置


(1)在公司映射文件中,表示所有员工

需要使用set标签表示所有员工
set标签的name属性需要写上在公司实体类里面表示员工的set集合名称,set标签里面还要包含一个key标签,key标签的column属性需要写实体类的外键属性名称。
在key标签的下面还需一个one-to-many标签,标签里面的class属性写员工实体类的全路径

(2)在员工映射文件中,表示所属公司

需要在一干涉文件中添加many-to-one标签,标签的name属性需要写上员工实体类里面表示公司的对象名称,标签的class属性需要写上公司类的全路径,标签的column属性需要写上外键属性名称

创建核心配置文件,把映射文件引入到核心配置文件中




二、多对多的关系

例:商品与订单的关系,一个商品可以属于多个订单,一个订单可以有多种商品。
        用户和角色的关系,一个角色可以包括多个用户,一个用户可以是多个角色。

创建一张用户表和一张角色表,还需创建一张关系表,关系表至少有两个外键,分别指向两张表的主键。

1、与一对多类似,先是创建实体类,然后让两个实体类互相表示。

(1)以订单和商品为例
一个订单可以有多种商品,使用set集合表示
//一个订单可以有多种商品
    private Set shangpinEntitySet=new HashSet();
    public Set getShangpinEntitySet() {
        return shangpinEntitySet;
    }
    public void setShangpinEntitySet(Set shangpinEntitySet) {
        this.shangpinEntitySet = shangpinEntitySet;
    }
一种商品可以属于多个订单,使用set集合表示
    //一种商品可以属于多个订单
    private Set dingdanEntitySet=new HashSet();
    public Set getDingdanEntitySet() {
        return dingdanEntitySet;
    }
    public void setDingdanEntitySet(Set dingdanEntitySet) {
        this.dingdanEntitySet = dingdanEntitySet;
    }

2、配置映射关系

(1)基本配置略
(2)配置多对多关系
都是使用set标签来表示彼此
在订单配置文件中配置如下标签

       
           
           
           
           
       

在商品配置文件中配置如下标签

       
           
           
           
           
       



3、在核心配置文件中引入映射文件
       
       



你可能感兴趣的:(web)