多对多左连接查询

目录

  • 左连接查询

老师对学生是多对多的关系,把中心放在老师上一个老师可以教多个学生,实际上老师对学生也可以理解为一对多的关系

左连接查询

场景:查询老师,并且把关联的学生也查出来

Teacher.java 映射文件:

@Getter@Setter@ToString
public class Teacher {private Integer teacher_id;private String teacher_name;List<Student> students = new ArrayList<>(); // 一个老师对应多个学生
}

创建一个 TeacherMapper 接口文件,代码如下:

public interface TeacherMapper {/*查询老师,并且把关联的学生也查出来*/public List<Teacher> getAllTeachers();
}

创建一个 TeacherMapper 的映射文件:

<mapper namespace="com.itlike.mapper.TeacherMapper"><select id="getAllTeachers" resultMap="teacherMap">SELECT * FROM `teacher` as tLEFT JOIN `stu_teacher_rel` as rON t.teacher_id = r.teacher_idLEFT JOIN `student` as sON s.stu_id = r.stu_id;</select><resultMap id="teacherMap" type="teacher"><id column="teacher_id" property="teacher_id"/><result column="teacher_id" property="teacher_id"/><collection property="students" javaType="list" ofType="student"><id column="stu_id" property="stu_id"/><result column="stu_name" property="stu_name"/></collection></resultMap></mapper>

测试类中:

public void test(){SqlSession sqlSession = MybatisUtils.openSession();TeacherMapper teacherMapper = sqlSession.getMapper(TeacherMapper.class);List<Teacher> allTeachers = teacherMapper.getAllTeachers();for (Teacher teacher : allTeachers) {System.out.println(teacher);}}

运行效果:与数据库查询结果相同。

15-多对多做左连接查询(查询老师,并且把关联的学生也查出来)相关推荐

  1. 【MyBatis笔记】17-多对多做左连接查询(查询老师,并且把关联的学生也查出来)

    多对多左连接查询 左连接查询 老师对学生是多对多的关系,把中心放在老师上,一个老师可以教多个学生,实际上老师对学生也可以理解为一对多的关系. 左连接查询 场景:查询老师,并且把关联的学生也查出来. T ...

  2. mysql查询每个老师对应的所有学生_practice02_数据库02----查询所有学生的学号, 姓名, 选课数, 总成绩...

    1. 首先建立数据表 建立四张数据表(, 成绩表(score)) 1. 学生表(students) 1.学生id  ----  s_id 2. 学生姓名  ----  s_name 3. 学生生日 - ...

  3. 03 mysql数据查询_MySql学习day03:数据表之间的连接、查询详解

    主键: 关键字:primary key 特点:不能为null,并且唯一. 主键分类: 逻辑主键:例如ID,不代表实际的业务意义,只是用来唯一标识一条记录(推荐) 业务主键:例如username,参与实 ...

  4. mysql左连接去重查询_mysql之单表查询、多表查询

    mysql查询 单表查询 """ 增: insert [into] [数据库名.]表名[(字段1[,...,字段n])] values (数据1[,...,数据n])[, ...

  5. 关于一对多,多对多的多表查询的控制

    一.一对多 以班级Classes和学生Student为例: 回忆sql语句: //内链接,两种方式效果一样,查询的是两边都有的数据 SELECT c.*,s.* FROM classes c,stud ...

  6. 在左表或右表的连接字段上建立索引对左、内连接的查询效率的优化情况分析

    -- 1.建表 drop table if exists dept_tbl;create table dept_tbl (rcrd_id int unsigned primary key auto_i ...

  7. 查询选修“张三“老师所授课程的学生中,成绩最高的学生信息及其成绩

    #每天进步一点点# MySQL 查询选修"张三"老师所授课程的学生中,成绩最高的学生信息及其成绩 1.以名字查出t_id SELECT t_id FROM teacher WHER ...

  8. mysql查询不同老师所教不同课程_mysql数据库面试题(学生表_课程表_成绩表_教师表)...

    Student(Sid,Sname,Sage,Ssex)学生表 Sid:学号 Sname:学生姓名 Sage:学生年龄 Ssex:学生性别 Course(Cid,Cname,Tid)课程表 Cid:课 ...

  9. mysql查询不同老师所教不同课程_MySQL学生表、老师表、课程表和成绩表查询语句,全部亲测...

    建表可自行百度,重点为查询: 一.数据准备: 1.student学生表数据: 2.teacher老师表数据: 3.course课程表数据: 4.score成绩表数据: 二.数据查询 1.查询平均成绩大 ...

最新文章

  1. 例4-1和例4-2和例4-3
  2. nagios配置监控的一些思路和工作流程
  3. Count The Repetitions
  4. hive 自定义元数据表_[一起学Hive]之十四-Hive的元数据表结构详解
  5. win7开机提示服务器正在运行,科技常识:win7电脑启动ie浏览器提示服务器正在运行的处理方法...
  6. ABP vNext微服务架构详细教程——简介
  7. 并非最边界的情况“OK“就真的“OK“(记洛谷P1720WA的经历,Java语言描述)
  8. android h5语音,html5录音支持pc和Android、ios部分浏览器,微信也是支持的,JavaScript getUserMedia...
  9. (1)散列表(哈希表)的定义
  10. VUE3组合api的钩子函数生命周期
  11. css animate属性spend不生效
  12. 遍历循环的高级用法(好简单...)
  13. 基于Spring Boot 的统一错误处理
  14. 电脑一开机内存(共8G)就用了70%以上,任务管理器里面查看没有占用内存很高的进程
  15. PAT甲级1141 Ranking of Institutions
  16. Anroid 开发so文件找不到问题-例高德地图SDK提示com.autonavi.amap.mapcore.MapCore.nativeNewInstance问题
  17. 微信超级更新!电脑上也能刷朋友圈了!
  18. 基于JAVA大众点评管理系统计算机毕业设计源码+系统+lw文档+部署
  19. 波士顿动力SpotMini改造有胳膊半人马,这家意大利创企打造极致机械手臂
  20. 基于SpringBoot+Vue手表电商销售系统的设计与实现

热门文章

  1. Python:矩阵加法、减法和数乘
  2. Bootstrap响应式框架,组件化开发
  3. 最早研究计算机网络目的的,最早研究计算机网络的目的是什么
  4. 全球及中国干制热带水果行业市场营运格局分析与发展策略建议报告2022-2028年
  5. spring boot关闭actuator路径
  6. Java入门 第一节 计算机的基础概念+Java环境配置
  7. 你觉得世界的尽头是什么
  8. matlab中偶分量怎么表示,matlab信号与系统演示实验
  9. 对数据库中的数据进行排序
  10. 前端推荐!阿里高性能表单解决方案——Formily