mybatis多对多的关系

Mybatis 多表查询:
表与表之间的关联关系:
一对多/多对一
使用场景:一个账户 对应多个订单
一对一:一个对应一个身份证号
多对多:一个学生被多个老师教过,一个老师教多个学生

三种关联关系:
。一对一:在任意一方引入主键作为外键
。一对多:在“多”的一方,添加“一”的方主键作为外键
。多对多:产生中间关系,引入两张表的主键作为外键,两个主键称为联合主键或使得字段作为主键。

**高耦合:**牵一发东全身
一处修改,其他地方夺得修改

我们在开发的过程中最好就是降低耦合性
关于外键的存在,会导致耦合性较高,SQL语句的性能比较优化

步骤:
1.先准备表:用户表 角色表 中间表
2.实体类
用户实体类,角色实体类
3.配置映射文件
用户的映射文件
角色的映射文件
4.实现功能
当我们查询用户的时候,可以同时得到用户所包含的角色信息
当我们查询角色的时候,可以同时得到角色赋予用户信息

#用户表
create table user(
id int primary key auto_increament
username varchar(30),
password varchar(30)
);

#角色表
create table role(
id int primary key aoto_increament,
role_name varchar (30),
role_description varchaer(20) comment’角色’
);
insert into role(id,role_name,role_descriptinon) values
(101,‘院长’,‘管理整个学院’),
(102,‘主任’,‘管理整个后勤’),
(103,‘科长’,‘管理整个教学科’);
#用户角色中间表
create table user_role(
uid int,
rid int,
primary key(uid,rid), 联合主键
foreign key(uid) refereces user(id),
foregin key(rid) refereces role(id)
);
insert into user_role(uid,rid) values
(1,103),
(2,102),
(3.101),

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1.Role 类

package cn.javabs.entity;

import java.io.Serializable;
import java.util.List;

/**
 *  持久化类  权限的实体类
 */
public class Role implements Serializable {
   
    private Integer roleId;  // 权限的id
    private  String roleName; // 权限的名字
    private String roleDescription; // 权限的描述
//    一个角色赋予多个用户 M:N
    private List<User> users;

    @Override
    public String toString() {
   
        return "Role{" +
                "roleId=" + roleId +
                ", roleName='" + roleName + '\'' +
                ", roleDescription='" + roleDescription + '\'' +
                ", users=" + 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) {
   <
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值