hibernate---->Collection映射
集合, 数组类型的映射: set,list, array, map
除了下面的方法外,还可以写自定义类型,即让List, Set集合类型存储到数据库时里面的元素用,号隔开.读出来的时候又分解成集合对象.这个有点像struts的类型转换器.
注意:
* 这里使用的集合类型时,集合对象里面存放的类型是基本数据类型,而不是复杂类或自定义类.
如果是自定义类,那可以用 多对一 的映射(放在set中).
* 集合的映射比较少使用
CollectionMapping.java
package com.ncepu.hibernate; import java.util.List; import java.util.Map; import java.util.Set; public class CollectionMapping { private int id; private String name; private Set setValue; private List listValue; private String[] arrayValue; private Map mapValue; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Set getSetValue() { return setValue; } public void setSetValue(Set setValue) { this.setValue = setValue; } public List getListValue() { return listValue; } public void setListValue(List listValue) { this.listValue = listValue; } public String[] getArrayValue() { return arrayValue; } public void setArrayValue(String[] arrayValue) { this.arrayValue = arrayValue; } public Map getMapValue() { return mapValue; } public void setMapValue(Map mapValue) { this.mapValue = mapValue; } }
CollectionMapping.hbm.xml
<class name="com.ncepu.hibernate.CollectionMapping" table="t_CollectionMapping"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <!--生成一个表t_set_value,用于存放set类型的数据--> <set name="setValue" table="t_set_value"> <!--生成一个主键set_id,作为外键参照t_CollectionMapping表主键--> <key column="set_id"/> <element type="string" column="set_value"/> </set> <list name="listValue" table="t_list_value"> <key column="list_id"/> <!--因为List是有序的,所以还得存放一个下标list_index--> <list-index column="list_index"/> <element type="string" column="list_value"/> </list> <array name="arrayValue" table="t_array_value"> <key column="array_id"/> <!--数组与List类型一样,也是有序的--> <list-index column="array_index"/> <element type="string" column="array_value"/> </array> <map name="mapValue" table="t_map_value"> <key column="map_id"/> <!--Map类型得存放map-key和map-value两个值--> <map-key type="string" column="map_key"/> <element type="string" column="map_value"/> </map> </class>
t_CollectionMapping
id |
name |
1 |
xxx |
t_set_values
set_id |
set_value |
1 |
a |
1 |
b |
t_list_value
list_id |
list_value |
list_index |
1 |
c |
0 |
1 |
d |
1 |
t_array_value
array_id |
array_value |
array_index |
1 |
e |
0 |
1 |
f |
1 |
t_map_value
map_id |
map_key |
map_value |
1 |
k1 |
v1 |
1 |
k2 |
v2 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律