MyBatis多对一、多对多注解方式实现

用户和角色多对多,角色和权限多对多。
用户表、角色表、权限表、加两个中间表。

不用多说,直接上代码

用户表:

1
2
3
4
5
6
7
8
9
public interface UserMapper {
@Select("select * from `user` where username=#{name}")
@Results({@Result(id=true,property="id",column="id"),
@Result(property="name",column="name"),
@Result(property="type",column="type"),
@Result(property="roles",column="id",javaType=List.class,
many=@Many(select="com.gjd.dao.RoleMapper.queryById"))})
User queryByName(String name);
}

角色表:

1
2
3
4
5
6
7
8
9
10
11
public interface RoleMapper {
@Select("select * from `role` r,`user_role` u where u.rid=r.id and u.uid=#{id}")
@Results({@Result(id=true,property="id",column="id"),
@Result(property="name",column="name"),
@Result(property="permission",column="permission"),
@Result(property="resourceType",column="resourceType"),
@Result(property="url",column="url"),
@Result(property="permissions",column="id",javaType=List.class,
many=@Many(select="com.gjd.dao.PermissionMapper.queryById"))})
List<Role> queryById(long id);
}

权限表:

1
2
3
4
public interface PermissionMapper {
@Select("select * from `role_permission` r,`permission` p where r.rid=#{id} and r.pid=p.id")
List<Permission> queryById(long id);
}

一对多、多对一

把many=@Many替换成one=@One就好了。

lightquant wechat
欢迎您订阅灯塔量化公众号!