上篇中已经介绍了如何创建外键,以下是实现的demo效果


从中我们可以查询出t_student中的学生信息以及其对应班级信息,并且可以根据id进行增删查改。

1、实体类代码

package com.ydf.demo.pojo;import lombok.Data;@Data
public class Student {private int stu_id;         //学生主键private String stu_name;    //学生姓名private int stu_classid;   //班级表外键private Grade grades;        //班级对象//注:如果没有配置lombok依赖 删除@Data注解 添加get set toString方法
}
package com.ydf.demo.pojo;import lombok.Data;@Data
public class Grade {private int class_id;       //班级主键private String class_name;  //班级名称
}

2、控制层代码

/***
* 查询所有学生相关信息
* @return
*/
@RequestMapping(value = "/")public String testModel(Model model){List<Student> studentList = studentService.selectStudent();System.out.println("学生所有信息===="+studentList);model.addAttribute("studentList",studentList);return "/index";
}

(service)服务层、(dao)数据访问层省略…

3、StudentMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.ydf.demo.dao.StudentDao"><resultMap type="com.ydf.demo.pojo.Student" id="studentMap"><id column="stu_id" property="stu_id"/><result column="stu_name" property="stu_name"/><association property="grades" javaType="com.ydf.demo.pojo.Grade"><id column="did" property="class_id"/><id column="dname" property="class_name"/></association></resultMap><select id="selectStudent" resultMap="studentMap">select u.stu_id,u.stu_name,d.class_id did,d.class_name dnamefrom t_student u,t_class d where u.stu_classid=d.class_id</select></mapper>

sql语句

select u.stu_id,u.stu_name,d.class_id did,d.class_name dname from t_student u,t_class d where u.stu_classid=d.class_id

4、index.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>
<table class="table table-hover"><thead class="thead-dark"><tr><th scope="col">#</th><th scope="col">姓名</th><th scope="col">所在班级</th><th scope="col">编辑</th></tr></thead><tbody><tr th:each="stu:${studentList}"><td th:text="${stu.stu_id}"></td><td th:text="${stu.stu_name}"></td><td th:text="${stu.grades.class_name}"></td><td><a th:href="@{'/stuInfo/'+${stu.stu_id}}">查看</a></td></tr></tbody>
</table>
<script th:src="@{/jquery-2.2.4/jquery.min.js}"></script>
<script th:src="@{/bootstrap-4.3.1-dist/js/bootstrap.js}"></script>
</body>
</html>

如果搭建的框架为SSM 则table表改为c标签的遍历循环,很简单。

<c:forEach items="${studentList}" var="stu">...省
</c:forEach>

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

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

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

  2. mongodb关联表查询

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

  3. Mybatis实现关联表查询

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

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

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

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

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

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

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

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

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

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

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

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

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

  10. Mybatis 实现关联表查询

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

最新文章

  1. 零基础学习Python需要注意的几个点,Python培训机构排名
  2. tensorflow电子书(附下载链接)
  3. storm_常用命令
  4. EXPRESS.JS再出发
  5. GPU Gems 3
  6. jQuery-1.9.1源码分析系列(六) 延时对象应用——jQuery.ready
  7. MySQL中索引的分类和基本操作
  8. java 构造函数和_Java类和构造函数
  9. linux笔记_20150825_linux下的软件工具唠叨下
  10. (转)两大量化交易巨头“抱团取暖”:Virtu14亿美元收购骑士资本
  11. Linux安装libmodbus库
  12. 解决Windows 10环境下 Realtek声卡 台式机前面板插孔没有声音输出问题
  13. c++ ‘-DNODE_GYP_MODULE_NAME=libsass‘ ‘-DUSING_UV_SHARED=1‘ ‘-DUSING_V8_SHARED=1‘ ‘-DV8_DEPRECATION_
  14. 如何用java画一颗圣诞树
  15. udisk2阻止自动Mount某些设备
  16. okdownload下载mp4视频文件
  17. 广义拉格朗日函数的理解
  18. 程序员如何提高自己的编程水平?
  19. 朝韩危机-Python模拟导弹互射
  20. 小程序音乐播放器播放闪退

热门文章

  1. mysql安装失败net_mysql安装后.net程序运行出错的解决方法
  2. 信息学奥赛一本通 1193:吃糖果 | OpenJudge NOI 2.6 1944:吃糖果
  3. 信息学奥赛一本通(1094:与7无关的数)
  4. 信息学奥赛一本通(1014:与圆相关的计算)
  5. 53 MM配置-评估和科目设置-定义评估控制
  6. C语言 strcpy函数实现
  7. vue多选框点击其中一个控制div隐藏_Vue 零碎知识点
  8. linux那些事之gup_flags
  9. 大数据系统和分析技术综述(引用最多)
  10. [实验流体力学][Matlab] pi 定理的应用