mybatis——连接查询

本文详细介绍了MyBatis中的一对一、一对多和多对多连接查询。一对一查询可通过实体类继承或直接添加实体属性实现,映射文件使用resultMap。一对多查询在主表实体中加入从表实体的List,从表包含主表引用,映射文件同样使用resultMap。多对多查询涉及中间表,中间表包含两个主键,主表和从表都需要包含对方的集合,映射文件类似一对多。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 一对一

如一个身份证对应一个人

1.1 可以使用实体类继承关系(使用较少)

在这里插入图片描述

1.2 (常用)在本实体类中直接添加一对一的实体属性在进行getter和setter

在这里插入图片描述

1.3 在映射文件中应使用resultMap作为返回值

在一对一使用的是association 、javaType和column连接的列
其中javaType可以使用别名来减少代码量
在这里插入图片描述
在这里插入图片描述

2.一对多

例如:stuinfo对classinfo

2.1 在包含多的实体类中加入List来包含

如一个用户有多个账户,主表实体包含从表实体集合的引用
在这里插入图片描述

2.2 从表应包含一个主表对象的引用

在这里插入图片描述

2.3 mapper映射文件中返回值应该是resultMap

一对多 使用collection 标签 属性为ofType
其中ofType也可以使用别名
在这里插入图片描述

3.多对多

例如:用户和角色,一个用户可以有多个角色,一个角色可以有多个用户
需要使用中间表
在这里插入图片描述

3.1 中间表应该包含两个表的主键(中间表不需要实体类)

3.2 角色表

应该包含另一个表的集合
在这里插入图片描述

3.3用户表应该也包含角色集合

    //多对多的关系映射:一个用户可以具备多个角色
    private List<Role> roles;

    public List<Role> getRoles() {
        return roles;
    }

    public void setRoles(List<Role> roles) {
        this.roles = roles;
    }

3.4 mapper映射文件

与一对多类似
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这次最后一次熬夜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值