在写一些需求的时候因为同一属性有好几个内容,比如存用户的时候我们需要对地址保存,而地址又分为工作地址,,学校地址,家庭,,因此我们需要在类中加入集合,用集合来保存特定的属性。大部分是类似这样的,
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(“上班地方”,“腾龙国际”);
执行成功后
数据库里键是存在最后的,查了查书也是那么写的,暂时就这样把。