Mybatis多表查询之多对多(角色到用户的查询,用户到角色的查询)

本文详细介绍了如何在Mybatis中实现多对多查询,包括从角色到用户的查询和用户到角色的查询。涉及SQL语句编写、实体类、持久层接口、映射文件的配置以及测试类的实现。
摘要由CSDN通过智能技术生成

Mybatis多表查询之多对多

实现用户和角色之间的多对多

用户与角色之间的关系模型:
	一个用户可以有多个角色。
	一个角色可以赋予多个用户。
步骤:
	1.建立两张表,用户表和角色表。
		让用户表和角色表之间具有多对多的关系。
		需要使用中间表,中间表包含各自的主键,在中间表中是外键。
	2.建立两个实体类:用户实体类和角色实体类。
		让用户和角色的实体类能体现出来多对多的关系。
		各自包含对方的一个集合引用。
	3.建立两个配制文件
		用户的配制文件。
		角色的配制文件。
	4.实现配置:
		当我们查询用户时,可以同时得到用户所包含的角色信息。
		当我们查询角色时,可以同时得到角色所赋予的用户信息。

角色到用户的多对多查询

SQL语句的实现

需求:
	实现查询所有对象并且加载它所分配的用户信息。
分析:
	查询角色我们要用到Role表,但角色分配的用户的信息我们并不能直接找到用户信息,而是要通过中间表(USER_ROLE表)才能关联到用户信息。
下面是实现的SQL语句:
	SELECT u.*,r.id AS rid,r.role_name,r.role_desc FROM role r 
		LEFT OUTER JOIN user_role ur ON r.id=ur.rid
		LEFT OUTER JOIN USER u ON ur.uid=u.id

编写角色实体类

public class Role implements Serializable {
    private Integer roleId;
    private String roleName;
    private String roleDesc;
    //多对多的关系映射,一个角色可以赋予多个用户
    private List<User> users;

    public List<User> getUsers() {
        return users;
    }

    public void setUsers(List<User> users) {
        this.users = users;
    }

    public Integer getRoleId() {
        return roleId;
    }

    public void setRoleId(Integer roleId) {
        this.roleId = roleId;
    }

    public String getRoleName() {
        return roleName;
    }

    public void setRoleName(String roleName) {
        this.roleName = roleName;
    }

    public String getRoleDesc() {
        return roleDesc;
    }

    public void setRoleDesc(String roleDesc) {
        this.roleDesc = roleDesc;
    }

    @Override
    public String toString() {
        return "Role{" +
                "roleId=" + roleId +
                ", roleName='" + roleName + '\'' +
                ", roleDesc='" + roleDesc + '\'' +
                '}';
    }
}

编写Role持久层接口


                
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值