zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    SpringBoot yml配置数据库密码特殊字符报错问题
    SpringBoot打jar包后无法访问resource下的文件
    js使用form提交工具类
    SpringBoot使用@ServerEndpoint无法@Autowired依赖注入问题解决
    java基于dfa实现敏感词过滤
    SpringBoot快速集成WebSocket实现群聊
    java生成序号前补0最简单的方法
    Mysql两个时间差计算方法
    python+selenium+webdriver环境搭建相关文档
    Java递归处理Tree树结构
  • 原文地址:https://www.cnblogs.com/xiaoqiangzhaitai/p/5429464.html
Copyright © 2011-2022 走看看