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

一、一对多的关系

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

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

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

private Set<yuangong> yuangongSet=new HashSet<yuangong>(); public Set<yuangong> getYuangongSet() { return yuangongSet; } public void setYuangongSet(Set<yuangong> 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属性需要写上外键属性名称

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

<mapping resource=”实体类配置文件路径”></mapping>

二、多对多的关系

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

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

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

(1)以订单和商品为例 一个订单可以有多种商品,使用set集合表示 //一个订单可以有多种商品

    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”/>

    原文作者:Daydream Mr.
    原文地址: https://blog.csdn.net/z498596750/article/details/54906637
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞