通过t_student表ID查询与其相关的信息,如某个学生的姓名和其所在班级

点击查看链接,如下


这里我们的班级名称是在t_class表中的,学生姓名是在t_student中的,并不是在同一张表上,这样当t_class中的班级名称改变之后,t_class中查到的班级信息也会随之改动,这样才达到表关联目的。

通过id查询学生相关信息

<td><a th:href="@{'/stuInfo/'+${stu.stu_id}}">查看</a></td>

控制层

/***
* 关联信息查询
* @param model
* @param id
* @return
*/
@GetMapping(value = "stuInfo/{id}")public String stuInfo(Model model,@PathVariable("id") Integer id){System.out.println("关联ID==="+id);//返回关联信息 studentDTO.getStudents()可以得到 StudentDTO(数据传输对象)与Grade(班级实体)对象信息StudentDTO studentDTO = studentService.selectStudentById(id);System.out.println("关联信息==="+studentDTO);System.out.println("与之关联的班级信息==="+studentDTO.getStudents());model.addAttribute("studentInfo",studentDTO.getStudents());return "/stuInfo";
}

创建数据传输对象实体类

package com.ydf.demo.dto;import com.ydf.demo.pojo.Grade;
import lombok.Data;
import java.util.List;//学生表的数据传输对象实体类
@Data
public class StudentDTO {private int stu_id;                   //学生主键private String stu_name;              //学生姓名private int stu_classid;              //班级表外键private Grade grade;                  //关联班级实体对象private List<StudentDTO> students;    //一个集合
}

业务层

StudentDTO selectStudentById(int id);

业务层接口实现类

@Overridepublic StudentDTO selectStudentById(int id) {List<Student> students = studentDao.selectStudentById(id);System.out.println("<1>根据主键ID查询学生个人信息==="+students);List<StudentDTO> studentDTOSList = new ArrayList<>();if (null != students){for (Student student : students ){Grade grade = studentDao.selectGradeById(student.getStu_classid());System.out.println("<2>根据外键查询所处班级信息==="+grade);StudentDTO studentDTO = new StudentDTO();//把student中的值赋给studentDTO(数据传输对象)BeanUtils.copyProperties(student,studentDTO);//把grade对象信息放入studentDTO(数据传输对象)中studentDTO.setGrade(grade);//放入studentDTOSList集合studentDTOSList.add(studentDTO);}}//再将集合中的值存入studentDTO1(数据传输对象)StudentDTO studentDTO1 = new StudentDTO();studentDTO1.setStudents(studentDTOSList);return studentDTO1;
}

数据接口层

List<Student> selectStudentById(@Param("stu_id") int id);Grade selectGradeById(@Param("class_id") int stu_classid);

mapper.xml

<select id="selectStudentById" resultType="com.ydf.demo.pojo.Student">select * from t_student where stu_id=#{stu_id};
</select><select id="selectGradeById" resultType="com.ydf.demo.pojo.Grade">select * from t_class where class_id=#{class_id};
</select>

html视图

<!DOCTYPE html>
<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>信息</title><link type="text/css" rel="stylesheet" th:href="@{/bootstrap-4.3.1-dist/css/bootstrap.css}" >
</head>
<body>
<div class="media" th:each="stu:${studentInfo}" style="padding: 200px;"><div class="media-body"><h5 class="mt-0" th:text="'姓名:'+${stu.stu_name}"></h5><h5 th:text="'所在班级:'+${stu.grade.class_name}"></h5></div>
</div>
</body>
</html>
注意:这个地方 stu.grade.class_name

SpringBoot FK-关联表查询(三)相关推荐

  1. mongodb关联表查询

    1.首先自定义一个查询的Operation package com.pica.wx.bean;import com.mongodb.DBObject; import org.springframewo ...

  2. MySQL 实现多张无关联表查询数据并分页

    MySQL 实现多张无关联表查询数据并分页 1.功能需求 在三张没有主外键关联的表中取出自己想要的数据,并且分页. 2.数据库表结构 水果表: 坚果表: 饮料表: 主要用UNION AL UNION ...

  3. Mybatis源码分析--关联表查询及延迟加载原理(二)

    在上一篇博客Mybatis源码分析--关联表查询及延迟加载(一)中我们简单介绍了Mybatis的延迟加载的编程,接下来我们通过分析源码来分析一下Mybatis延迟加载的实现原理. 其实简单来说Myba ...

  4. Mybatis实现关联表查询

    Mybatis实现关联表查询 6.1. 一对一关联 1). 提出需求 根据班级 id 查询班级信息(带老师的信息) 2). 创建表和数据 [](javascript:void(0)

  5. hibernate mysql 关联查询_hibernate 查询缓存,以及在关联表查询缓存下使用HQL,而不是sql去查询...

    什么是查询缓存? 也就是如果开启了查询缓存, 在 没有使用二级缓存的情况下,会 缓存第一次查询出来的数据的id. 第二次查询的时候, 如果查询的参数和查询语句没有变化,那么就会使用 第一次查询的出来的 ...

  6. Mybatis系列(三):Mybatis实现关联表查询

    原文链接:http://www.cnblogs.com/xdp-gacl/p/4264440.html 一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 ...

  7. 7.Mybatis关联表查询(这里主要讲的是一对一和一对多的关联查询)

    视频地址:http://edu.51cto.com/sd/be679 在Mybatis中的管理表查询这里主要介绍的是一对一和一对多的关联查询的resultMap的管理配置查询,当然你也可以用包装类来实 ...

  8. MyBatis学习总结(五)——实现关联表查询

    2019独角兽企业重金招聘Python工程师标准>>> 一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里 ...

  9. MyBatis学习总结(5)——实现关联表查询

    一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...

最新文章

  1. input[type=file]属性
  2. 2.14 文件和目录权限chmod
  3. 2021快手短剧数据报告
  4. PyQt5笔记(06) -- 菜单
  5. tar 打包、压缩和备份
  6. 洛谷P5170 【模板】类欧几里得算法(数论)
  7. Mac 下开启系统自带webserver
  8. 通过CN3口直接控制台达伺服电机A2-M(二)
  9. 呼吸灯程序(非阻塞)
  10. Planetside.Software.Terragen.v0.9.43.WinALL 1CD(景观产生器)
  11. VBA在Excel中的插件制作
  12. 微信小程序图片下边加文字组合
  13. 企业微信推送suite_ticket对接
  14. 论文笔记 Triformer: Triangular, Variable-Specific Attentions for Long SequenceMultivariate Time Series
  15. Linux部署启动服务脚本
  16. matlab生成vcf,从VCF文件中提取样本数据
  17. 案例分享:陕西西安599条背街小巷改造提升,推行“多杆合一”
  18. 2015校园招聘联通笔试的几个题目
  19. Tungsten Fabric入门宝典丨8个典型故障及排查Tips
  20. 直面顾客不满:坏消息也可以是好消息

热门文章

  1. 计算机丢失i4m.dll,ntd.dll难住机器人发烧友
  2. 信息学奥赛一本通(2060:【例1.1】计算机输出)
  3. 信息学奥赛一本通(1198:逆波兰表达式)
  4. 平衡点 / 吊打XXX(洛谷-P1337)
  5. 级数求和(信息学奥赛一本通-T1087)
  6. 信息学奥赛C++语言: 趣味整数1(自守数)
  7. 信息学奥赛一本通C++语言——1088:分离整数的各个数
  8. python 生成html_Python使用pyh生成HTML文档的方法示例
  9. U-Net中的skip connection
  10. python怎么用split字符串全部分开_请教一下python怎么用split对一句话拆分两次?...