建立两张表:用户表,角色表
让用户表和角色表具有多对多的关系。需要使用中间表,中间表中包含各自的主键,在中间表中是外键。
1 当我们查询所有角色时,可以同时得到角色的所赋予的用户信息
一个Role可以赋予给多个User,因此在Role的实体类中包含User的集合引用:public class Role implements Serializable {
private Integer roleId;
private String roleName;
private String roleDesc;
//多对多的关系映射:一个角色可以赋予多个用户private List users;}
然后我们需要在IRoleDao.xml中定义封装role和user的一对多的resultMap:
然后写查询语句:role先左关联user_role,再左关联user
select r.id as rid,r.role_name,r.role_desc,u.* from role r
left outer join user_role ur on r.id = ur.rid
left outer join user u on U.ID = ur.uid
在测试类中测试:/** * 测试查询所有 */@Testpublic void testFindAll(){
List roles = roleDao.findAll();
for(Role role : roles){
System.out.println("---每个角色的信息----");
System.out.println(role);
System.out.println(role.getUsers());
}}
2 当我们查询所有用户时,可以同时得到用户所包含的角色信息
一个User可以有多个Role,因此在User的实体类中包含Role的集合引用:public class User implements Serializable {
private Integer userId;
private String userName;
private String userAddress;
private String userSex;
private Date userBirthday;
//一对多关系映射:主表实体应该包含从表实体的集合引用private List accounts;
//多对多的关系映射:一个用户可以具备多个角色private List roles;}
然后我们需要在IUserDao.xml中定义封装user和role的一对多的resultMap:
然后写查询语句:user先左关联user_role,再左关联role