首页
学习
活动
专区
圈层
工具
发布

sql中一对多,多对一,一对一关系的解析

1、一对多:比如说一个班级有很多学生,可是这个班级只有一个班主任。在这个班级中随便找一个人,就会知道他们的班主任是谁;知道了这个班主任就会知道有哪几个学生。这里班主任和学生的关系就是一对多。...2、多对一:比如说一个班级有很多学生,可是这个班级只有一个班主任。在这个班级中随便找一个人,就会知道他们的班主任是谁;知道了这个班主任就会知道有哪几个学生。这里学生和班主任的关系就是多对一。...3、一对一:比如说一个班级有很多学生,他们分别有不同的学号。一个学生对应一个学号,一个学号对应一个学生;通过学号能找到学生,通过学生也能得到学号,不会重复。这里学生和学号的关系就是一对一。...4、多对多:比如说一个班级有很多学生,他们有语文课、数学课、英语课等很多课。一门课有很多人上,一个人上很多门课。这里学生和课程的关系就是多对多。

4.9K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    mybatis-plus 自定义SQL、一对多、分页查询过滤多租户

    前言         这几天在使用的mybatis-plus的时候,在遇见复杂业务的时候遇见的一些租户过滤问题,面对多表关联查询的时候、自定义sql的时候,或者说一对多的时候,其中一个查询等功能过滤过滤租户的解决方案...在一个缓存命中率不高的场景中,分页很多时候不能依赖主数据分页查询再遍历查询的方式来组装数据的时候,就会遇见自定义sql 或者是一对多查询。这个时候如果用mybatis-plus的多租户就会很有问题。...自定义sql分页查询方法: Mapper.xml select * from user ${ew.customSqlSegment...能通过传递租户ID就不自动拼接sql吗? 能让增加、修改、删除需要租户,而查询不需要吗?...最后说说一对多sql实现 VO代码: /** * @Description: 说明 * @author: kinbug * @date: 2021年07月22日 */ @Data public

    6.3K50

    hibernate 一对一,一对多,多对多关联关系使用

    标准数据查询语言SQL就是一种基于关系数据库的语言,这种语言执行对关系数据库中数据的检索和操作。 关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。...明显的数据冗余,毕竟关系不用双方存储。 利用mappedBy属性,指明关系由哪一方维护。 一对多关系处理 创建两个实体对象,分别对应一与多的一方。...只有一个OneToMany注解 默认情况下是生成了一张关系表。用户维护一对多关系。 ? 关系表 至于默认的表名列名,大家可以去看生成规则。...加上@JoinColumn属性表结构 扩展 在一对多双方都设置了关联关系后,进行数据存储模拟 @Test public void contextLoads() { OneObject...控制端打印sql如下 除了三条insert数据。还有两条update语句。这个很好理解。先插入多的一方数据,然后在把one对应的一方关联加进去。 想要避免这种多余sql。有两种方式。

    7.9K20

    MyBatis多表查询 - 一对一 - 一对多 - 多对多

    : 多表关系 在上面我们已经准备好了 sql 表结构,在 sql 中具有 一对一、一对多、多对多 三种关系。...# 多表关系 1. sql中 a. 一对一 b. 一对多 : 用户 和 订单 c. 多对多 : 用户 和 角色 2. mybatis中 a. 一对一 b....一对一 一对一查询模型 用户表和订单表的关系为,一个用户有多个订单(一对多),一个订单只从属于一个用户(一对一) 一对一查询的需求:查询一个订单,与此同时查询出该订单所属的用户 1....一对多查询模型 用户表和订单表的关系为,一个用户有多个订单,一个订单只从属于一个用户 一对多查询的需求:查询一个用户,与此同时查询出该用户具有的订单 1....(由二个一对多组成) 多对多查询的模型 用户表和角色表的关系为,一个用户有多个角色,一个角色被多个用户使用 多对多查询的需求:查询用户同时查询出该用户的所有角色 在mybatis中多对多实现,跟一对多步骤是一样

    4.8K10

    多表间的关系-一对多-多对多-一对一-外键约束

    多表间的关系-一对多-多对多-一对一-外键约束 1. 表关系概述 现实生活中,实体与实体之间肯定是有关系的,比如:老公和老婆,部门和员工,用户和订单、订单和商品、学生和课程等等。...表和表之间的关系分成三种: 一对一 (老公和老婆) 一对多 (部门和员工, 用户和订单) 多对多 (学生和课程) 例如: 双11当天,马哥和东哥两个用户分别在淘宝上下了一些订单,已知马哥下了...1个订单,订单总金额为999元....一对多 一对多(1:n) 例如:班级和学生,部门和员工,客户和订单,分类和商品 一对多建表原则: 在从表(多方)创建一个字段,指向主表(一方)的主键.我们把这个字段称之为外键. 3....多对多 多对多(m:n) 例如:老师和学生,学生和课程,用户和角色 多对多关系建表原则: 需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键。 4.

    9.9K20

    MyBatis-多表查询(一对多)

    1、多表查询(一对多) 1.1、使用多表查询前的准备 准备好班级表和学生表 1.2、需求分析 查询所有班级下面的学生信息 班级信息和他的学生信息为一对多关系,并且在查询班级的信息过程中查询出学生信息。...我们想到了左外连接查询比较合适。...SQL如下: select c.cname,s.* from classes c left join students s on c.cid=s.cid order by c.cid 2、案例实现...classes c left join students s on c.cid=s.cid order by s.cid 注: collection标签是用于建立一对多中集合属性的对应关系...ofType属性用于指定集合元素的数据类型 property属性关联查询的结果集存储在哪个属性上 2.4、编写测试类MbClassesTest.java文件 import com.tyschool.mb005

    1.5K11

    Django笔记(十三)一对一,一对多,多对多之间的查询

    目录 一对一 创建实例 choice类型如何获取具体值 如何获取一对一另一个表里面的数据 一对多 实体类 一对多代码(自己创建第三个表) 一对多代码(Django给你生成第三个表) 如何操作第三个表...增加 移除 编辑(覆盖) 查询 清空 一对一 创建实例 class UserProfile(models.Model): user_info = models.OneToOneField('...(自己创建第三个表) 有个相亲表都是外键,现在想要获取到和一个男孩相亲的女生有多少个,也就是男生是一个,女生是多个,典型的一对多的关系 # 查询到某一个男生 obj = Boy.objects.filter...连接 一对多代码(Django给你生成第三个表) 我们有了男孩表,女孩表,之前我们写一个相亲表,让男孩表和女孩表进行关联。现在我们不写第三个表了,但是还想让两个表进行关联,我们可以这样写。...移除 编辑(覆盖) 查询 清空

    5K20

    如何用 Room 处理一对一,一对多,多对多关系?

    从 Room 2.2 (现已稳定)开始,通过 @Relation注解,我们支持了表之间所有可能的关系:一对一,一对多,多对多 。...一对一 假如我们生活在一个(悲伤的)世界,每个人只能拥有一条狗,并且每条狗也只能有一个主人。这就是一对一关系。为了在关系型数据库中 表示这一关系,我们创建了两张表,Dog 和 Owner 。...Transaction @Query("SELECT * FROM Owner") fun getDogsAndOwners(): List 注意:由于 Room 会在后台自动为我们执行这两次查询...一对多 假设一个主人可以拥有多条狗狗 (Yeah !) ,Owner 和 Dog 之间是一对多的关系。之前定义的数据库结构不需要发生任何变化,我们仍然使用之前的表,因为相关联的键已经在表中了。...无论你需要一对一,一对多,还是多对多的支持,Room 都可以通过 @Relation 注释满足你。

    5.8K20

    【MyBatis框架点滴】——MyBatis一对多查询

    中一对多和多对一的查询方法。   ...语句查询出的结果为: ?   ...虽然sql语句查询出的结果为8条数据,但实际上只有4个订单(通过id字段可以看出来),MyBatis自动把id相同的记录合并成一个订单实体,并根据resultMap中的配置,把属于同一个订单的订单明细分别放到了对应订单的订单明细集合中...如果熟悉Hibernate的话,到了这里,您是不是也和小编觉得这跟Hibernate的配置也有些相似呢~~   如果要问多对一查询的话,实际上你已经不知不觉地实现了~订单和用户啥关系?...~ ---- 【 转载请注明出处——胡玉洋《【MyBatis框架点滴】——MyBatis一对多查询》】

    1.2K30

    关于mybatis一对一查询,一对多查询遇到的错误

    springboot整合mybatis项目 博客系统 文章,相册,评论,标签,等表 IDEA为最新版2021.3.3,mysql数据库为最新版Navicat (或许有些字段不支持特定的命名) 也是醉了...,以前idea还是19版的,navicat也是老版本的时候mybatis关联查询mapper操作能正常运行,拿到相应字段,并封装,但最近写项目过程中遇到一个离谱的是,过了好久才发现, 当关联查询时...,无论一对一还是一对多 除了需要注意javaType和ofType之外,还应该注意各表主键不能同一名称 实体类文章 @Data @AllArgsConstructor @NoArgsConstructor...,并关联查询==作者==,文章==标签==(一个文章多个标签) 先看一下我下面代码块的写法,注意一对一,一对多的各个实体查询时的id,都是拿的数据库的id字段,只有标签被我改为了tag_id <select...拿到每张表的同一主键名称id吗 并不能拿到 控制台仅仅正确输出了标签list中的tag_id,没错,细心点,我也是最后才发现,它nn的,上面输出的user(文章作者)他的id封装错了,他的id是这篇文章的id,所以,sql

    1.6K50

    数据库在一对一、一对多、多对多怎么设计表关系

    1、一对一可以两个实体设计在一个数据库中l例如设计一个夫妻表,里面放丈夫和妻子 2、一对多可以建两张表,将一这一方的主键作为多那一方的外键,例如一个学生表可以加一个字段指向班级(班级与学生一对多的关系...) 3、多对多可以多加一张中间表,将另外两个表的主键放到这个表中(如教师和学生就是多对多的关系) ---- 关于外键的设置: 首先,外键引用的那个列在主表中必须是主键列或者唯一列。...,并且一个学生只能属于一个班级,这就是一对多的关系; 那么设计数据库的时候就应该在学生表内存放班级的ID作为外键,为什么不在班级表内放学生呢?...key(classid) references class(classid) --本表classid是基于class表classid的外键 ) --------- 如上定义了主外键后,两个表间的关系就是一对多的关系了...,并且学生表内的classid必须依托班级表的classid存在,也就是说外键必须要主键存在的时候才能创建,例如: --在班级表为空的情况往学生表插入一条记录是不允许的: insert into students

    8K20

    Mybatis【17】-- Mybatis自关联查询一对多查询

    在数据表里面实现就是一张表,有一个外键pid,用来表示该栏目的父栏目,一级栏目没有父栏目的,可以将其外键设置为0。...DB表如下: 查询指定栏目的所有子孙栏目 查询指定目录的所有子孙目录,我们需要使用递归的思想,查出当前栏目之后,需要将当前栏目的id作为下一级栏目的pid。...实体类NewsLabel.java,使用一对多的关系: import java.util.Set; public class NewsLabel { private Integer id; private...查询指定目录以及指定子孙目录 添加一个sql的接口: List selectSelfAndChildByParentId(int pid); mapper文件里面实现,在resultMap...里面递归调用另一个sql,最外层的sql只执行一次,这样就可以实现查询自身一次,递归查询子孙栏目的功能: <!

    97920

    Mybatis【17】-- Mybatis自关联查询一对多查询

    在数据表里面实现就是一张表,有一个外键pid,用来表示该栏目的父栏目,一级栏目没有父栏目的,可以将其外键设置为0。...DB表如下: [29192b55571a01e02f992bad110400da.png] 查询指定栏目的所有子孙栏目 查询指定目录的所有子孙目录,我们需要使用递归的思想,查出当前栏目之后,需要将当前栏目的...实体类NewsLabel.java,使用一对多的关系: import java.util.Set; public class NewsLabel { private Integer id; private...查询指定目录以及指定子孙目录 添加一个sql的接口: List selectSelfAndChildByParentId(int pid); mapper文件里面实现,在resultMap...里面递归调用另一个sql,最外层的sql只执行一次,这样就可以实现查询自身一次,递归查询子孙栏目的功能: <!

    1.4K00

    APIJSON-实现一对一,一对多复杂查询

    为各种增删改查提供了完全自动化的万能 API,零代码实时满足千变万化的各种新增和变更需求。能大幅降低开发和沟通成本,简化开发流程,缩短开发周期。...在演示查询之前我们先建几个表,Test_user、Test_user_moent_ref(关联表)、Test_moment,关联关系如图 随便添加几条数据,必须保证关联关系是正确的。...我们先用 SQL 查询,查询结果如下 一 单表查询 - 单条数据 1 单条数据 单表查询返回一条数据,用 Test_user 做示例,请求格式如下, { "Test_user": {} } APIJSON...对象,from 为目标表 Table 的名称; 二 单表查询 - 多条数据 1 多条数据 单表查询返回多条数据,用 Test_user 做示例,请求格式如下, { "[]":{ "Test_user..."Test_user_moent_ref":{ "entity_id@":"Test_user/id" } } } 返回数据如下 五 两张表-数组内一对一关联查询

    2.2K30

    Mybatis【14】-- Mybatis如何实现一对多查询?

    语句在resource下的test.sql中),觉得有用可以点个小星。...docsify文档地址在:https://damaer.github.io/Mybatis-Learning/#/ 很多时候,当查询条件涉及到具有关联关系的多个表的时候,需要使用到关联查询,关联查询一般有四种...一对一关联查询 一对多关联查询 多对一关联查询 多对多关联查询 下面我们需要实践的是一对多关联查询,所谓一对多就是一个对象里面的属性是一个对象的集合。比如每个国家都有几个领导。...Country selectCountryById(int cid); Country selectCountryById2(int cid); } mapper.xml文件,对应的两种方式实现一对多查询...,我们需要指定一个resultMap,其他子标签一样,但是里面不再调用另外的sql语句,只是指定了属性与字段对应就可以了。

    1.6K00

    Mybatis【14】-- Mybatis如何实现一对多查询?

    语句在resource下的test.sql中),觉得有用可以点个小星。...docsify文档地址在:https://damaer.github.io/Mybatis-Learning/#/ 很多时候,当查询条件涉及到具有关联关系的多个表的时候,需要使用到关联查询,关联查询一般有四种...一对一关联查询 一对多关联查询 多对一关联查询 多对多关联查询 下面我们需要实践的是一对多关联查询,所谓一对多就是一个对象里面的属性是一个对象的集合。比如每个国家都有几个领导。...Country selectCountryById(int cid); Country selectCountryById2(int cid); } mapper.xml文件,对应的两种方式实现一对多查询...,我们需要指定一个resultMap,其他子标签一样,但是里面不再调用另外的sql语句,只是指定了属性与字段对应就可以了。

    1.3K30
    领券