現在有三個表: user,role,user_role
根據三個表創建映射實體類:
class User {
private int id;
private String username;
private String password;
//get set
}
class Role {
private int id;
private String role;
//get set
}
public class UserRole {
private int id;
private int u_id;
private int r_id;
private User users;
private Role roles;
//get set
}
這里把User,Role 放到UserRole里是最簡單的方式,當一個User對應多個Role的時候,這樣寫取出多個Role也是最方便的,有人會說為什么不把private Role roles; 換成private List<Role> roles;這是因為我們有很多業務會直接取Role中的role屬性,所以使用這種方法取role屬性的時候也是最方便的。
UserRoleMapper.xml:
<mapper namespace="com.demo.dao.UserRoleDao">
<resultMap type="com.demo.bean.UserRole" id="BaseColumn">
<id column="id" property="id" />
<result column="u_id" property="u_id" />
<result column="r_id" property="r_id" />
<association property="users" javaType="com.demo.bean.User">
<id column="id" property="id" />
<result column="username" property="username" />
<result column="password" property="password" />
</association>
<association property="roles" javaType="com.demo.bean.Role">
<id column="id" property="id" />
<result column="role" property="role" />
</association>
</resultMap>
<sql id="base">
ur.id ,
ur.u_id,
ur.r_id
</sql>
<sql id="userColumn">
u.id,
u.username,
u.password
</sql>
<sql id="roleColumn">
r. id,
r. role
</sql>
<select id="selectUserWithRoles" resultMap="BaseColumn">
select
<include refid="base" />,
<include refid="userColumn" />, ,
<include refid="roleColumn" />
from user_role ur
LEFT JOIN `user` u on u.id=ur.u_id
LEFT join role r on
r.id=ur.r_id
where
u_id=#{u_id}
</select>
</mapper>
這樣三個表就關聯好了。