(8)集合映射:list(@OrderBy)、map(@MapKey、map遍历方法)
2017-11-13 16:08
555 查看
通常情况下在一对多中用set即可,但是也可以用list、map
一、list :在Javaee中他是有序表,所以有@OrderBy注解,这个注解的含义是一对多端输出时,可以按照多端某个字段排序输出,建表语句没有任何影响,只是从一端输出多端时,会排序输出,在默认情况下,是按照主键升序输出
Group类
User类
Test
假设存了 u1 u2
则从组端取出的组员姓名依次是u2 u1
二、map:是键值对,所以要有唯一 的键 @MapKey
//User表无变化
首先对高级for循环,来做解释 for(元素类型 元素名:数组(集合名))
g1.getUsers().entrySet() 将map集合中每个元素看成一个对象 , 返回此映射所包含的映射关系的 Set 视图。
public Set
一、list :在Javaee中他是有序表,所以有@OrderBy注解,这个注解的含义是一对多端输出时,可以按照多端某个字段排序输出,建表语句没有任何影响,只是从一端输出多端时,会排序输出,在默认情况下,是按照主键升序输出
Group类
@Entity @Table(name="_Group") public class Group { private int id; private String gname; private List<User> users=new ArrayList<User>();//一般用set,用list可以利用@OrderBy对任意字段进行排序 @Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } @OneToMany(mappedBy="group",cascade={CascadeType.ALL}) @OrderBy("name ASC") /* * 该注解是对有序列表进行映射,默认情况是对id排序。 */ public List<User> getUsers() { return users; } public void setUsers(List<User> users) { this.users = users; } }
User类
@Entity @Table(name="_User")//对表重命名 public class User { private int id; private String name; private Group group; @Id //必须加在getId上面 @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; } @ManyToOne(cascade={CascadeType.ALL}) /* * */ public Group getGroup() { return group; } public void setGroup(Group group) { this.group = group; } }
Test
假设存了 u1 u2
则从组端取出的组员姓名依次是u2 u1
@org.junit.Test public void UserDefaultOrder() { UserSave(); Session session=sf.getCurrentSession(); session.beginTransaction(); Group g=(Group) session.get(Group.class, 1); for(int i=0;i<g.getUsers().size();i++){ System.out.println(g.getUsers().get(i).getName()); } session.getTransaction().commit(); }
二、map:是键值对,所以要有唯一 的键 @MapKey
@Entity @Table(name="_Group") public class Group { private int id; private String name; private Map<Integer,User> users=new HashMap<Integer,User>(); @Id @GeneratedValue 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; } @OneToMany(mappedBy="group",cascade={CascadeType.ALL}) @MapKey(name="id") public Map<Integer, User> getUsers() { return users; } public void setUsers(Map<Integer, User> users) { this.users = users; } }
//User表无变化
首先对高级for循环,来做解释 for(元素类型 元素名:数组(集合名))
g1.getUsers().entrySet() 将map集合中每个元素看成一个对象 , 返回此映射所包含的映射关系的 Set 视图。
public Set
@org.junit.Test public void UserDefaultOrder() { Session session2=sf.getCurrentSession(); session2.beginTransaction(); Group g1=(Group) session2.get(Group.class, 1); for(Entry<Integer, User> entry:g1.getUsers().entrySet()){ System.out.println(entry.getValue().getName()); } session2.getTransaction().commit(); }
相关文章推荐
- java的集合-List-Map-Set遍历的方法及相互的区别
- jstl遍历map集合中的list集合方法
- Java集合Set、List、Map的遍历方法
- java中List、Set、Map、Properties集合的遍历方法总结
- Java集合List、Set、Map的遍历方法
- Java集合Set、List、Map的遍历方法
- Java集合Set、List、Map的遍历方法
- Java集合Set、List、Map的遍历方法
- java中List、Set、Map集合的遍历方法总结
- Java集合Set、List、Map的遍历方法
- Java集合Set、List、Map的遍历方法
- Java集合Set、List、Map的遍历方法
- Java集合Set、List、Map的遍历方法
- JAVA基础回顾1 遍历List Set 和Map集合的所有方法
- Java集合Set、List、Map的遍历方法
- map集合的4种遍历方法和List集合的2种遍历和迭代器Iterator的使用
- list和map集合遍历方法
- Map映射集合实现类HashMap的介绍和迭代遍历方法
- Java集合Set、List、Map的遍历方法