您的位置:首页 > 其它

集合映射

2016-07-19 23:01 274 查看

集合映射

set集合映射

list集合映射

map映射

User.java

public class User {
private int userId;
private String userName;
// 一个用户,对应的多个地址
private Set<String> address;
private List<String> addressList = new ArrayList<String>();
//private String[] addressArray; // 映射方式和list一样     <array name=""></array>
private Map<String,String> addressMap = new HashMap<String, String>();
}


User.hbm.xml配置(hibernate.cfg.xml主配置就不写了)

<hibernate-mapping package="cn.itcast.a_collection">

<class name="User" table="t_user">
<id name="userId" column="id">
<generator class="native"></generator>
</id>
<property name="userName"></property>

<!--
set集合属性的映射
name 指定要映射的set集合的属性
table 集合属性要映射到的表
key  指定集合表(t_address)的外键字段
element 指定集合表的其他字段
type 元素类型,一定要指定
-->
<set name="address" table="t_address">
<key column="id"></key>
<element column="address" type="string">
</element>
</set>

<!--
list集合映射
list-index  指定的是排序列的名称 (因为要保证list集合的有序)
-->
<list name="addressList" table="t_addressList">
<key column="uid"></key>
<list-index column="idx"></list-index>
<element column="address" type="string"></element>
</list>

<!--
map集合的映射
key  指定外键字段
map-key 指定map的key
element  指定map的value
-->
<map name="addressMap" table="t_addressMap">
<key column="uid"></key>
<map-key column="shortName" type="string" ></map-key>
<element column="address" type="string" ></element>
</map>
</class>
</hibernate-mapping>


App.java测试类

public class App {

private static SessionFactory sf;
static {
sf = new Configuration()
.configure()
.buildSessionFactory();
}

// 保存set
@Test
public void testSaveSet() throws Exception {
Session session = sf.openSession();
session.beginTransaction();

//-- 保存
Set<String> addressSet = new HashSet<String>();
addressSet.add("广州");
addressSet.add("深圳");
// 用户对象
User user = new User();
user.setUserName("Jack");
user.setAddress(addressSet);

// 保存
session.save(user);

session.getTransaction().commit();
session.close();
}

// 保存list/map
@Test
public void testSaveList() throws Exception {
Session session = sf.openSession();
session.beginTransaction();
User user = new User();
user.setUserName("Tom");
//      // 用户对象  --  list
//      user.getAddressList().add("广州");
//      user.getAddressList().add("深圳");
//      // 保存
//      session.save(user);

// 用户对象  --  Map
user.getAddressMap().put("A0001", "广州");
user.getAddressMap().put("A0002", "深圳");

// 保存
session.save(user);

session.getTransaction().commit();
session.close();
}


数据库结果:

set集合





list集合





3.map





几种映射的区别:

set映射是无序的,映射一个有效字段。

list映射是有序的,映射一个有效字段。

map映射无序,映射两个字段有效字段。

数组映射和map映射方式相同。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息