Mybatis多表关联一对多查询(Collection)

实现的是角色表、权限表、以及角色权限关联表的三表连接查询

三张表如下

角色表:
Mybatis多表关联一对多查询(Collection)_第1张图片
权限表:
Mybatis多表关联一对多查询(Collection)_第2张图片
角色权限关联表:
Mybatis多表关联一对多查询(Collection)_第3张图片

实体类如下

此处省略掉其他字段

角色实体类:

    /**
     * 

角色ID 主键自增

*/ private int id; /** *

角色描述和用户表中的chineseName关联

*/ @NotNull(message = "角色名不能为空") private String name; /** *

权限集合 用于一对多查询

*/ private List permissionPermList;

权限实体类:

 /**
     * 

权限ID

*/ private int id; /** *

父id

*/ private int pid; /** *

许可名字

*/ private String name;

现在需要通过角色查询到该角色的权限
select *
from role_perm as r
left join role_permission_perm as rp
on r.id=rp.role_perm_id
right join permission_perm as p
on p.id=rp.permission_perm_id
where r.id=1

表关联查询结果如下:
Mybatis多表关联一对多查询(Collection)_第4张图片

但我们只需要一个角色对应多个权限的结果
这就需要Mybatis的Collection

配置如下:
collection中的property为角色实体类中定义的private List permissionPermList; 权限集合
ofType为权限的实体
我们是多表关联,字段id会有相同的情况,所以需要起别名
Mybatis多表关联一对多查询(Collection)_第5张图片
查询sql如下
Mybatis多表关联一对多查询(Collection)_第6张图片
这样就解决了多表关联一对多的查询
查询结果如下:
Mybatis多表关联一对多查询(Collection)_第7张图片

你可能感兴趣的:(Java,Java,Mybatis一对多查询)