場景:查詢中間表對應的用戶和角色,這裏一條中間表數據分別只對應一個用戶和一個角色。當然一般不會有這樣的需求,這裏只是舉例一對一關係.
一、數據結構
1、用戶表
2、角色表
3、中間表
二、xml自定義sql
<resultMap type="com.xiao.permission_system.entity.UerRole" id="BaseColumn">
<id column="id" property="id" />
<result column="uid" property="uid" />
<result column="role_id" property="roleId" />
<association property="users" javaType="com.xiao.permission_system.entity.UserInfo">
<id column="id" property="id" />
<result column="username" property="username" />
<result column="password" property="password" />
</association>
<association property="roles" javaType="com.xiao.permission_system.entity.Role">
<id column="id" property="id" />
<result column="name" property="name" />
</association>
</resultMap>
<sql id="base">
ur.uid,
ur.role_id
</sql>
<sql id="userColumn">
u.id,
u.username,
u.password
</sql>
<sql id="roleColumn">
r.id,
r.name
</sql>
<select id="getRoles" resultMap="BaseColumn">
select
<include refid="base" />,
<include refid="userColumn" />,
<include refid="roleColumn" />
from sys_uer_role ur
LEFT JOIN sys_user_info u on u.id=ur.uid
LEFT join sys_role r on
r.id=ur.role_id
where
uid=#{uid}
</select>
三、中間表實體
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("sys_uer_role")
public class UerRole extends BaseEntity{
private static final long serialVersionUID = 1L;
/**
* 主鍵
*/
@TableId()
private String id;
private String uid;
private String roleId;
private UserInfo users;
private Role roles;
}