博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hibernate学习系列-----(9)hibernate对集合属性的操作之Map集合篇
阅读量:5279 次
发布时间:2019-06-14

本文共 3669 字,大约阅读时间需要 12 分钟。

照旧,先新建一个StudentMap.java实体类,将hobby属性使用map集合接口来存放:

package com.joe.entity;import java.util.Map;public class StudentMap {        private int id;    private String name;    private int age;    private Map
hobby; /** * 无参构造函数 */ public StudentMap(){ } 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 int getAge() { return age; } public void setAge(int age) { this.age = age; } public Map
getHobby() { return hobby; } public void setHobby(Map
hobby) { this.hobby = hobby; } }

接下来就是配置对象关系映射文件了,在hibernate中可以使用<map>标签来配置,先了解一下<map>标签的常见属性及子元素吧:<map>元素用来映射java.util.Map类型的属性,常用的属性和子元素有:

  1. name属性
  2. table属性
  3. <key>子元素
  4. <map-key>子元素
  5. <element>子元素

在java中,map集合接口存放数据是采用键值对的形式,因此<map-key>就是来map的键的,因此它也需要额外的列来保存键值。StudentMap.hbm.xml中的内容是:

最后贴上StudentMapTest.java类的代码吧,这个测试和以前的几篇文章中的测试无异,就不在一个一个地展示了:

package com.joe.test;import java.util.HashMap;import java.util.Map;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.hibernate.tool.hbm2ddl.SchemaExport;import org.junit.Test;import com.joe.entity.StudentMap;import com.joe.util.HibernateUtils;public class StudentMapTest {        @Test    public void createTable() {        Configuration cfg = new Configuration().configure();        SchemaExport se = new SchemaExport(cfg);        se.create(true, true);    }                @Test    public void save(){        Transaction tx=null;        Session session=null;        try{            session=HibernateUtils.getSession();            tx=session.beginTransaction();                        StudentMap stu=new StudentMap();            stu.setName("wangwu");            stu.setAge(20);                        @SuppressWarnings({ "unchecked", "rawtypes" })            Map
map=new HashMap(); map.put("a", "run"); map.put("b", "eat"); stu.setHobby(map); session.save(stu); tx.commit(); }catch(HibernateException he){ if(tx!=null){ tx.rollback(); } he.printStackTrace(); }finally{ HibernateUtils.closeSession(session); } } @Test public void findAll(){ Transaction tx=null; Session session=null; try{ session=HibernateUtils.getSession(); tx=session.beginTransaction(); StudentMap stu=(StudentMap)session.get(StudentMap.class, 1); System.out.println(stu.getId()+stu.getName()+stu.getAge()); Map
map=stu.getHobby(); System.out.println(map); tx.commit(); }catch(HibernateException he){ if(tx!=null){ tx.rollback(); } he.printStackTrace(); }finally{ HibernateUtils.closeSession(session); } }}

hibernate对集合的操作就写到这儿了,其实还有很多没有写到的,如果有大神看过我的文章,希望多多指点,最后,关于java集合的学习,我在园子里看到有园友写过一个系列,感觉写得非常好,建议大家看看,

转载于:https://www.cnblogs.com/doctorJoe/p/4720253.html

你可能感兴趣的文章
HDU 2665 Kth number
查看>>
CodeChef DGCD Dynamic GCD
查看>>
记叙在人生路上对你影响最大的三位老师
查看>>
002.大数据第二天
查看>>
python装饰器
查看>>
树上的路径
查看>>
【转载】TCP好文
查看>>
系统平均负载
查看>>
【并发】实现内存可见的两种方法比较:加锁和volatile变量
查看>>
[线段树]/[水法] Jzoj P100036 随机
查看>>
问题总结
查看>>
jenkins升级为2.134
查看>>
软件随笔
查看>>
C/C++知识补充 (1)
查看>>
Fast Poisson Disk Sampling
查看>>
Python Cookbook(第3版)中文版:15.14 传递Unicode字符串给C函数库
查看>>
python之socket模块
查看>>
Linux下SVN自动更新web [转]
查看>>
线程系列02,多个线程同时处理一个耗时较长的任务以节省时间
查看>>
编程:对经验世界的析构与建构
查看>>