mybatis 级联查询

1.定义四个实体。User   Role    Privilege   Resource,他们之间的对于关系为

2.需求:我通过用户名username查找出该用户对应的角色以及角色对应的权限和资源

3.实体

public class User implements Serializable {
	private String id;
	private String username;
	private String password;

	private Set<Role> role = new HashSet<Role>();
public class Role implements Serializable {
	private String id;
	private String name;
	private String des;

	private Set<Privilege> privilege = new HashSet<Privilege>();

public class Privilege implements Serializable {  private String id;  private String name;  private String des;

 private Set<Resource> resource = new HashSet<Resource>();  private Privilege parent;  private Set<Privilege> child = new HashSet<Privilege>();

public class Resource implements Serializable {
 private String id;
 private String uri;
 private String des;


4.UserMapper.xml的查询方法为

        <resultMap type="user" id="userResult">
		<id column="id" property="id"/>
		<result column="username" property="username"/>
		<collection property="role" javaType="java.util.Set" resultMap="roleResult"/>
	</resultMap>
	
	<resultMap type="role" id="roleResult">
		<id column="rid" property="id"/>
		<result column="rname" property="name"/>
		<result column="rdes" property="des"/>
		<collection property="privilege" javaType="java.util.Set" resultMap="privilegeResult"/>
	</resultMap>
	
	<resultMap type="privilege" id="privilegeResult">
		<id column="pid" property="id"/>
		<result column="pname" property="name"/>
		<collection property="resource" javaType="java.util.Set" resultMap="resourceResult"/>
	</resultMap>
	
	<resultMap type="resource" id="resourceResult">
		<id column="resid" property="id"/>
		<result column="resuri" property="uri"/>
	</resultMap>
<select id="findUserByUserName" parameterType="string" resultMap="userResult">
  select u.id,u.username,r.id as rid,r.name as rname,r.des as rdes,p.id as pid,p.name as pname,res.id as resid,res.uri as resuri
  from tb_user u 
  left join user_role ur on ur.user_id=u.id
  join tb_role r on r.id=ur.role_id
  join role_privilege rp on rp.role_id=r.id
  join tb_privilege p on p.id=rp.privilege_id
  join tb_resource res on res.privilege_id=p.id
  where u.username=#{username}
 </select>

5.UserMapper.java定义方法

@Component
public interface UserMapper {

	User findUserByUserName(@Param(value="username")String username);
	
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值