表的多对多关系及操作
多对多的表关系表达
创建表:
用户表
角色表
关系表
创建实体类:
用户实体类
package com.entity;
import java.util.HashSet;
import java.util.Set;
public class Users {
/*
* 多对多关系实体类
*/
private int uids;
private String unames;
private Set<Role> role=new HashSet<Role>();
public Users() {
super();
}
public Users(String unames) {
super();
this.unames = unames;
}
public int getUids() {
return uids;
}
public void setUids(int uids) {
this.uids = uids;
}
public String getUnames() {
return unames;
}
public void setUnames(String unames) {
this.unames = unames;
}
public Set<Role> getRole() {
return role;
}
public void setRole(Set<Role> role) {
this.role = role;
}
}
import java.util.HashSet;
import java.util.Set;
public class Users {
/*
* 多对多关系实体类
*/
private int uids;
private String unames;
private Set<Role> role=new HashSet<Role>();
public Users() {
super();
}
public Users(String unames) {
super();
this.unames = unames;
}
public int getUids() {
return uids;
}
public void setUids(int uids) {
this.uids = uids;
}
public String getUnames() {
return unames;
}
public void setUnames(String unames) {
this.unames = unames;
}
public Set<Role> getRole() {
return role;
}
public void setRole(Set<Role> role) {
this.role = role;
}
}
角色实体类:
package com.entity;
import java.util.HashSet;
import java.util.Set;
public class Role {
/*
* 多对多关系实体类
*/
private int rid;
private String rname;
private Set<Users> users=new HashSet<Users>();
public Role() {
super();
}
public Role(String rname) {
super();
this.rname = rname;
}
public int getRid() {
return rid;
}
public void setRid(int rid) {
this.rid = rid;
}
public String getRname() {
return rname;
}
public void setRname(String rname) {
this.rname = rname;
}
public Set<Users> getUsers() {
return users;
}
public void setUsers(Set<Users> users) {
this.users = users;
}
}
import java.util.HashSet;
import java.util.Set;
public class Role {
/*
* 多对多关系实体类
*/
private int rid;
private String rname;
private Set<Users> users=new HashSet<Users>();
public Role() {
super();
}
public Role(String rname) {
super();
this.rname = rname;
}
public int getRid() {
return rid;
}
public void setRid(int rid) {
this.rid = rid;
}
public String getRname() {
return rname;
}
public void setRname(String rname) {
this.rname = rname;
}
public Set<Users> getUsers() {
return users;
}
public void setUsers(Set<Users> users) {
this.users = users;
}
}
这里我们不需要创建关系表的实体类,通过hibernate来创建关系就可以了
映射文件
用户映射
<set name="role" table="users_role" cascade="save-update"> //able="users_role"关系表
<key column="uids"></key>
<many-to-many class="com.entity.Role" column="rid"></many-to-many>
</set>
<key column="uids"></key>
<many-to-many class="com.entity.Role" column="rid"></many-to-many>
</set>
角色映射
<set name="users" table="users_rid">
<key column="rid"></key>
<many-to-many class="com.entity.Users" column="uids"></many-to-many>
</set>
<key column="rid"></key>
<many-to-many class="com.entity.Users" column="uids"></many-to-many>
</set>
配置文件
<!-- 配置多对多的映射文件 -->
<mapping resource="com/entity/Users.hbm.xml"></mapping>
<mapping resource="com/entity/Role.hbm.xml"></mapping>
<mapping resource="com/entity/Users.hbm.xml"></mapping>
<mapping resource="com/entity/Role.hbm.xml"></mapping>
操作:
package com.zking.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.zking.entity.Card;
import com.zking.entity.City;
import com.zking.entity.Province;
import com.zking.entity.Roles;
import com.zking.entity.User;
import com.zking.entity.Users;
public class TestManyToMany {
private SessionFactory sessionFactory;
private Session session;
private Transaction transaction;
@Before
public void before(){
Configuration configuration=new Configuration().configure();
sessionFactory = configuration.buildSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
}
@After
public void after(){
transaction.commit();
session.close();
sessionFactory.close();
}
@Test
public void testAdd(){
Users users1=new Users("辉辉");
Users users2=new Users("静静");
Roles roles1=new Roles("老公");
Roles roles2=new Roles("老婆");
Roles roles3=new Roles("儿子");
Roles roles4=new Roles("孙子");
users1.getRoles().add(roles1);
users1.getRoles().add(roles3);
users1.getRoles().add(roles4);
users2.getRoles().add(roles2);
users2.getRoles().add(roles4);
session.save(users1);
session.save(users2);
}
}
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.zking.entity.Card;
import com.zking.entity.City;
import com.zking.entity.Province;
import com.zking.entity.Roles;
import com.zking.entity.User;
import com.zking.entity.Users;
public class TestManyToMany {
private SessionFactory sessionFactory;
private Session session;
private Transaction transaction;
@Before
public void before(){
Configuration configuration=new Configuration().configure();
sessionFactory = configuration.buildSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
}
@After
public void after(){
transaction.commit();
session.close();
sessionFactory.close();
}
@Test
public void testAdd(){
Users users1=new Users("辉辉");
Users users2=new Users("静静");
Roles roles1=new Roles("老公");
Roles roles2=new Roles("老婆");
Roles roles3=new Roles("儿子");
Roles roles4=new Roles("孙子");
users1.getRoles().add(roles1);
users1.getRoles().add(roles3);
users1.getRoles().add(roles4);
users2.getRoles().add(roles2);
users2.getRoles().add(roles4);
session.save(users1);
session.save(users2);
}
}