【学习笔记】Hibernate映射List、Map、数组、Set、Bag的具体操作
来源:互联网 发布:金蝶软件在线服务中心 编辑:程序博客网 时间:2024/05/16 04:51
已经给出了所有需要的代码,数据库的配置这些就不给啦
注意:使用集合映射类声明时要注意使用接口而不是具体实现类。因为经过Session操作后,集合就变成了hibernate自己的集合实现类。
实体类:User.java
import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.List;import java.util.Map;import java.util.Set;public class User {private Integer id;private String name;private Set<String> addressSet = new HashSet<String>(); // Set集合private List<String> addressList = new ArrayList<String>(); // List集合private String[] addressArray; // 数组private Map<String, String> addressMap = new HashMap<String, String>();private List<String> addressBag = new ArrayList<String>();public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Set<String> getAddressSet() {return addressSet;}public void setAddressSet(Set<String> addressSet) {this.addressSet = addressSet;}public List<String> getAddressList() {return addressList;}public void setAddressList(List<String> addressList) {this.addressList = addressList;}public String[] getAddressArray() {return addressArray;}public void setAddressArray(String[] addressArray) {this.addressArray = addressArray;}public Map<String, String> getAddressMap() {return addressMap;}public void setAddressMap(Map<String, String> addressMap) {this.addressMap = addressMap;}public List<String> getAddressBag() {return addressBag;}public void setAddressBag(List<String> addressBag) {this.addressBag = addressBag;}}
映射文件:User.hbm.xml
<?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="cn.itcast.e_hbm_collection"><class name="User" table="user"><id name="id"> <generator class="native"></generator></id><property name="name"/><!-- addressSet属性,Set集合 table属性:集合表的名称key子元素:集合外键的列名element子元素:存放集合元素的列的信息sort属性:"unsorted|natural|comparatorClass"默认为:unsortedorder-by属性:写的是order by 子句,是SQL语句,是操作的集合表。这是在查询数据时指定orderby子句。--><set name="addressSet" table="user_addressSet" order-by="address ASC"><key column="userId"></key><element type="string" column="address"></element></set><!-- addressList属性,List集合 list-index:用于存放索引的列--><list name="addressList" table="user_addressList"><key column="userId"></key><list-index column="idx"></list-index><element type="string" column="address"></element></list><!-- addressArray属性,数组。与List的映射基本一致 --><array name="addressArray" table="user_addressArray"><key column="userId"></key><list-index column="idx"></list-index><element type="string" column="address"></element></array><!-- addressMap属性,Map集合 --><map name="addressMap" table="user_addressMap"><key column="userId"></key><map-key type="string" column="key_"></map-key><element type="string" column="address"></element></map><!-- addressBag属性,Bag集合:无序,可重复。与Set集合的映射基本一致 --><bag name="addressBag" table="user_addressBag"><key column="userId"></key><element type="string" column="address"></element></bag></class></hibernate-mapping>
测试类:App.java
import java.util.Arrays;import java.util.HashSet;import java.util.Set;import java.util.TreeSet;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;import org.junit.Test;public class App {private static SessionFactory sessionFactory = new Configuration()//.configure()//.addClass(User.class)// 添加Hibernate实体类(加载对应的映射文件).buildSessionFactory();@Testpublic void testSave() throws Exception {Session session = sessionFactory.openSession();session.beginTransaction();// --------------------------------------------// 构建对象User user = new User();user.setName("张天");// >> Set集合user.setAddressSet(new TreeSet<String>()); // 当设置了sort属性时,就要使用SortedSet类型user.getAddressSet().add("2岭南");user.getAddressSet().add("1小新塘");// >> List集合user.getAddressList().add("岭南");user.getAddressList().add("小新塘");user.getAddressList().add("小新塘");// >> 数组user.setAddressArray(new String[] { "岭南", "小新塘" });// >> Map集合user.getAddressMap().put("公司", "岭南");user.getAddressMap().put("家庭", "小新塘");// >> Bag集合user.getAddressBag().add("岭南");user.getAddressBag().add("小新塘");user.getAddressBag().add("小新塘");// 保存session.save(user);// --------------------------------------------session.getTransaction().commit();session.close();}@Testpublic void testGet() throws Exception {Session session = sessionFactory.openSession();session.beginTransaction();// --------------------------------------------// 获取数据User user = (User) session.get(User.class, 9);// 显示信息System.out.println(user.getName());System.out.println(user.getAddressSet());System.out.println(user.getAddressList());System.out.println(Arrays.toString(user.getAddressArray()));System.out.println(user.getAddressMap());System.out.println(user.getAddressBag());// --------------------------------------------session.getTransaction().commit();session.close();}}
1 0
- 【学习笔记】Hibernate映射List、Map、数组、Set、Bag的具体操作
- 【Hibernate】Hibernate的集合映射(Set、List、Array、Map、Bag)
- Hibernate的集合映射(Set、List、Array、Map、Bag)
- Hibernate的集合映射(Set、List、Array、Map、Bag)
- Hibernate常见的集合映射 Set,List,Array,Map,Bag
- Hibernate的集合映射(Set、List、Array、Map、Bag)
- Set、Bag、List、Map的映射方式
- hibernate学习笔记(map,set,list映射)
- Hibernate常见集合映射(Set,List Array,Map,Bag)
- hibernate 映射集合(Set,List Array,Map,Bag)
- Hibernate 多表关联映射- Hibernate中使用的集合类型(set,list,array,bag,map)
- Hibernate的Set,List,Map集合映射,数组映射
- Hibernate之映射集合(值类型的set,bag,idbag,list和map)
- Hibernate常见的集合映射主要有Set,List,Array,Map,Bag
- Hibernate常见的集合映射主要有Set,List,Array,Map,Bag等
- Hibernate常见的集合映射主要有Set,List,Array,Map,Bag .
- Hibernate学习笔记:集合映射之映射Set, Bag
- Hibernate学习---第七节:数组&list&map&set的映射配置
- 百度POI api文档
- 贝叶斯决策定理
- Java AWt 1.1
- iphone,ipad,关于icon图标的那些事
- java--finalize()的学习
- 【学习笔记】Hibernate映射List、Map、数组、Set、Bag的具体操作
- HDU1159 Common Subsequence 最长公共子序列
- SQL索引
- iOS开发UI篇—控制器的创建
- Axure RP 7.0注册码
- 黑马程序员————Foundation框架_知识总结(下)
- 本地生活服务api
- 别再自称“码农”了,编程是门思维的艺术
- POJ3281