设置resultMap,我们需要返回每个user的基本信息id,username,email,phoneNum,以及对应的角色,由于一个人可以承担多个角色,因此用collection来存档多个role的信息 注:property是指sql语句中需要使用的参数名 column是指数据库中表的列名
<resultMap id="userMap" type="User" >
<id property="id" column="id" />
<result property="username" column="username"/>
<result property="email" column="email"/>
<result property="phoneNum" column="phoneNum"/>
<collection property="roleList" ofType="Role">
<id property="id" column="r_id"/>
<result property="roleName" column="r_roleName"/>
<result property="roleDesc" column="r_roleDesc"/>
</collection>
</resultMap>
<select id="list" resultMap="userMap">
select u.id,u.username,u.email,u.phoneNum,r.id as r_id ,r.roleName as r_roleName,r.roleDesc as r_roleDesc from sys_user u
left outer join sys_user_role ur on u.id = ur.userId
left outer join sys_role r on ur.roleId = r.id
</select>
sys_user对应的实体类
public class User {
private Long id;
private String username;
private String email;
private String password;
private String phoneNum;
private List<Role> roleList;
//set、get方法省略
}
sys_role对应的实体类
public class Role {
private Long id;
private String roleName;
private String roleDesc;
//set、get方法省略
}
对应的图表结构:由于sys_role表和sys_user表是多对多的关系,因此sys_user_role为中间表,记录两者关系。