11. 集合映射-Map

集合映射-Map

键值对映射模型

Map

表结构

items_map(父表)

CREATE TABLE items_map(
    id NUMBER(10) PRIMARY KEY,
    name VARCHAR2(20)
);

images_map(子表)

不设置主键,使用两个栏位作为联合主键

CREATE TABLE images_map(
    image_name VARCHAR2(20) NOT NULL,
    filename VARCHAR2(20) NOT NULL,
    items_id NUMBER(10) REFERENCES items_map(id),
    PRIMARY KEY(items_id, image_name)
);

类结构

可以看出,Map里存储的都是值类型的键值对。适时,key为image_name,filename为filename。

public class ItemsMap{
    private Long id;
    private String name;
    private Map<String, String> images = new HashMap<String, String>();
    ......
}

映射文件

map标签:配置子表

key标签:配置子表外键

map-key:配置map中的key元素对应的栏位

element:实际上就是map-value,配置map中的值,因为这里是值类型(String),所以我们使用element元素,如果我们要使用实体类型,则应该使用one-to-many或者one-to-one元素

<class name="ItemsMap" table="ITEMS_MAP">
    ...
    <map name="images" table="IMAGES_MAP" cascade="all" inverse="false">
        <key column="ITEMS_ID" type="long"/>
        <map-key type="string" column="IMAGE_NAME"/>
        <element column="FILENAME" type="string" not-null="true"/>
    </map>
</class>

集合映射小结

  • 对象模型用的是Set类型的集合,映射文件用的是<set>元素

  • 对象模型用的是List集合,如果想维护元素的顺序,单独向表中添加一列,可用<lists>元素。如果不希望维护元素的顺序,没有单独的一列,可以使用<bag>或者<idbag>元素。

  • 对象模型是Map集合,映射文件用的是<map>元素。

  • List集合在映射时单独多了一列是为了维护元素的顺序,可以有重复值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值