hibernate的集合映射

在写一些需求的时候因为同一属性有好几个内容,比如存用户的时候我们需要对地址保存,而地址又分为工作地址,,学校地址,家庭,,因此我们需要在类中加入集合,用集合来保存特定的属性。大部分是类似这样的,
Set<String>addressSet=new HashSet<String>();

最近学习了框架,因此用框架来实现数据库存储集合,就是说我们要把集合里的数据放到另外一张表(因为三大范式的原因),本篇采用3种集合方式来演示如何把集合映射并存储数据,
1.set集合映射
一般集合映射需要在对应的类映射xml中加入对应的集合标签,比如set就需要加入set标签,就像这样:`

<set name="addressSet" table="address_set">
		<key column="userid" foreign-key="pid" ></key>
		<element column="addressName" type="string" length="50"></element>
		</set>`

set 后面紧跟的name属性是要跟类中的集合对象相对应的,然后table是要存储的表格,因为我们需要放入一个新的表中,
然后是key标签,集合中都需要这个标签,这个标签column是列名字,foreign-key是引入另外一张表的主键,就是说跟用户绑定,
element 标签是内容,type类型要注意的是要是使用java的String那么需要把全称写上,也就是java.lang.String 或者使用hibernate 的类型,小写,string。 长度不是必须写的,主要是不写的话数据库默认给最大,255,为了节省空间我就写了length.
然后是测试一下添加:

cm.getAddressSet().add("长安南路");
		//cm.getAddressSet().add("襄阳");

执行成功后数据库
在这里插入图片描述
2,list的映射:
list映射跟set稍有不同,就是多了个标签

 <list name="addresslist" table="address_list">
			<key column="userid" foreign-key="pid"></key>
			<list-index column="sid" ></list-index>
			<element column="addressname" type="string" length="50"></element>
		</list>

list-index这个是记录索引的字段,自增的。
其他两个同理,所以我就省了,
然后是测试list。

cm.getAddresslist().add("中通国际");
		cm.getAddresslist().add("万家福超市");

执行结果
在这里插入图片描述
3.map映射:
map映射也是加map标签,不同的是map标签多了个map-key标签,用来保存键值

<!-- key标签用来引用外键,就是跟用户关联起来 -->
		<map name="addressmap" table="address_map">
		<key column="addressid" foreign-key="pid" ></key>
		<map-key column="addressname" type="string"></map-key>
		<!-- map-key在用来保存键值 -->
		<element column="address" type="string"></element>
		</map>

测试:
cm.getAddressmap().put(“工作地方”,“赛格国际”);
cm.getAddressmap().put(“上班地方”,“腾龙国际”);
执行成功后
在这里插入图片描述
数据库里键是存在最后的,查了查书也是那么写的,暂时就这样把。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值