这里我们以用户 user 表和 角色role 表为例,假定一个用户能被分配成多重角色,而一种角色也能分给多个用户,故用户和角色构成多对多的关系
需求:给定角色id,查询这个角色所属的所有用户信息
①、在数据库中建立相应的表
user 表
role 表
两者之间的关联表user_role
public class User { //用户ID public int id; //用户姓名 public String username; //用户性别 public String sex; //一个用户能被分配多种角色 public List<Role> roles; //set,get...... }
public class Role { public int id; public String name; //一种角色包含多个用户 public List<User> users; //set,get...... }
中间表
public class User_Role { private User user; private Role role; //set,get }
创建 UserMapper 接口和 UserMapper.xml 文件
UserMapper 接口
public interface UserMapper { //给定一个角色id,要得到具有这个角色的所有用户信息 public List<User> getUserByRoleId(int roleId); }
UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="many.to.many.mapper.UserMapper">
<resultMap type="com.ys.po.User" id="getUserMap"> <id column="id" property="id"/> <result column="username" property="username"/> <result column="sex" property="sex"/> </resultMap>
<select id="getUserByRoleId" resultMap="getUserMap">
select * from user_role ur,user u where ur.user_id=u.id and ur.role_id=#{id}
</select>
</mapper>