SpringBoot FK-关联表查询(三)
通过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-关联表查询(三)相关推荐
- mongodb关联表查询
1.首先自定义一个查询的Operation package com.pica.wx.bean;import com.mongodb.DBObject; import org.springframewo ...
- MySQL 实现多张无关联表查询数据并分页
MySQL 实现多张无关联表查询数据并分页 1.功能需求 在三张没有主外键关联的表中取出自己想要的数据,并且分页. 2.数据库表结构 水果表: 坚果表: 饮料表: 主要用UNION AL UNION ...
- Mybatis源码分析--关联表查询及延迟加载原理(二)
在上一篇博客Mybatis源码分析--关联表查询及延迟加载(一)中我们简单介绍了Mybatis的延迟加载的编程,接下来我们通过分析源码来分析一下Mybatis延迟加载的实现原理. 其实简单来说Myba ...
- Mybatis实现关联表查询
Mybatis实现关联表查询 6.1. 一对一关联 1). 提出需求 根据班级 id 查询班级信息(带老师的信息) 2). 创建表和数据 [](javascript:void(0)
- hibernate mysql 关联查询_hibernate 查询缓存,以及在关联表查询缓存下使用HQL,而不是sql去查询...
什么是查询缓存? 也就是如果开启了查询缓存, 在 没有使用二级缓存的情况下,会 缓存第一次查询出来的数据的id. 第二次查询的时候, 如果查询的参数和查询语句没有变化,那么就会使用 第一次查询的出来的 ...
- Mybatis系列(三):Mybatis实现关联表查询
原文链接:http://www.cnblogs.com/xdp-gacl/p/4264440.html 一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 ...
- 7.Mybatis关联表查询(这里主要讲的是一对一和一对多的关联查询)
视频地址:http://edu.51cto.com/sd/be679 在Mybatis中的管理表查询这里主要介绍的是一对一和一对多的关联查询的resultMap的管理配置查询,当然你也可以用包装类来实 ...
- MyBatis学习总结(五)——实现关联表查询
2019独角兽企业重金招聘Python工程师标准>>> 一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里 ...
- MyBatis学习总结(5)——实现关联表查询
一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关 ...
最新文章
- input[type=file]属性
- 2.14 文件和目录权限chmod
- 2021快手短剧数据报告
- PyQt5笔记(06) -- 菜单
- tar 打包、压缩和备份
- 洛谷P5170 【模板】类欧几里得算法(数论)
- Mac 下开启系统自带webserver
- 通过CN3口直接控制台达伺服电机A2-M(二)
- 呼吸灯程序(非阻塞)
- Planetside.Software.Terragen.v0.9.43.WinALL 1CD(景观产生器)
- VBA在Excel中的插件制作
- 微信小程序图片下边加文字组合
- 企业微信推送suite_ticket对接
- 论文笔记 Triformer: Triangular, Variable-Specific Attentions for Long SequenceMultivariate Time Series
- Linux部署启动服务脚本
- matlab生成vcf,从VCF文件中提取样本数据
- 案例分享:陕西西安599条背街小巷改造提升,推行“多杆合一”
- 2015校园招聘联通笔试的几个题目
- Tungsten Fabric入门宝典丨8个典型故障及排查Tips
- 直面顾客不满:坏消息也可以是好消息
热门文章
- 计算机丢失i4m.dll,ntd.dll难住机器人发烧友
- 信息学奥赛一本通(2060:【例1.1】计算机输出)
- 信息学奥赛一本通(1198:逆波兰表达式)
- 平衡点 / 吊打XXX(洛谷-P1337)
- 级数求和(信息学奥赛一本通-T1087)
- 信息学奥赛C++语言: 趣味整数1(自守数)
- 信息学奥赛一本通C++语言——1088:分离整数的各个数
- python 生成html_Python使用pyh生成HTML文档的方法示例
- U-Net中的skip connection
- python怎么用split字符串全部分开_请教一下python怎么用split对一句话拆分两次?...