首页 > 网站 > WEB开发 > 正文

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

2024-04-27 15:09:55
字体:
来源:转载
供稿:网友

一、一对多的关系

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

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

(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"/>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表