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);
业务层接口实现类
@Override
	public 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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

DT辰白

你的鼓励是我创作的源泉

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

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

打赏作者

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

抵扣说明:

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

余额充值