首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

十二 会合映射之Map集合

2012-10-24 
十二 集合映射之Map集合十二 Map集合映射Map是以键值对的形式存放数据的 现在我们假设员工数据的name为唯

十二 集合映射之Map集合

十二 Map集合映射Map是以键值对的形式存放数据的 现在我们假设员工数据的name为唯一的 现在我们来看映射文件<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="vo.util.bean"><class name="Employee"><id name="id"><generator unique="true"/><many-to-one name="derpartment" column="depaer_id" not-null="true"/></class></hibernate-mapping>unique是定义其为唯一键的约束 员工实体类package vo.util.bean;/** * 员工类 * @author Administrator * */public class Employee {    private int id;    private String name;    private Department derpartment;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 Department getDerpartment() {return derpartment;}public void setDerpartment(Department derpartment) {this.derpartment = derpartment;}@Overridepublic String toString() {// TODO Auto-generated method stubreturn "id="+this.id+" name="+this.name;}}现在我们来定义部门实体package vo.util.bean;import java.util.Map;/** * 部门类 * @author Administrator * */public class Department {  private int id;  private String name;  private Map<String,Employee> ems;  public Map<String, Employee> getEms() {return ems;}public void setEms(Map<String, Employee> ems) {this.ems = ems;}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;}}这行是定义Map集合的 private Map<String,Employee> ems;映射文件 <?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="vo.util.bean"><class name="Department"><id name="id"><generator /></set> -->        <map name="ems">        <key column="depaer_id"/> <map-key type="string" column="name"/> <one-to-many class="Employee"/> </map></class></hibernate-mapping>分析 发现这跟List并没有太大的区别 其实map节点的里面字段属性意义都是一样的就<map-key 这个节点有特殊之处 这是指定其键的 因为Map是以键值对的形式存在的 type是指定键的类型 当前指定为string类型 这个column是干什么用的呢?这个是指定其键的值是以那个列为键的 当前是以员工的name这个列作为键存在的 测试类package vo.util.test;import java.util.HashMap;import java.util.HashSet;import java.util.Map;import org.hibernate.Session;import org.hibernate.Transaction;import vo.util.HibernateUtil;import vo.util.bean.Department;import vo.util.bean.Employee;public class OneToMany {/** * @param args */public static void main(String[] args) {         add();        query(1);}    static Department add(){    Session session = null;    Transaction tx = null;    try{    session =HibernateUtil.getSession();    tx = session.beginTransaction();    //…你的代码save,delete,update,get…    Department dpart=new Department();    dpart.setName("政企事业部");        Employee em1=new Employee();    em1.setName("员工李小仙");    em1.setDerpartment(dpart);        Employee em2=new Employee();    em2.setName("员工张小三");    em2.setDerpartment(dpart);        Map<String,Employee> ems=new HashMap<String, Employee>();        ems.put(em1.getName(), em1);        ems.put(em2.getName(), em2);                dpart.setEms(ems);        session.save(dpart);    session.save(em1);    session.save(em2);            tx.commit();    return dpart;    }finally{    if(session != null)session.close();    }     }        static Department query(int id){    Session session=null;        try{       session=HibernateUtil.getSession();       Department d=(Department)session.get(Department.class, id);              System.out.println(d.getEms());          return d;    }finally{    if(session != null)session.close();    }     }}通过输出发现:输出是键值对的形式输出的 end 完毕!

?

热点排行