Mybatis--sql多对一的处理

2023-11-15

  我们先来看看下图所示的例子,学生和老师之间就是一种多对一的关系。
在这里插入图片描述

  • 对于学生这边而言,多个学生关联一个老师【多对一】;这是关联
  • 对于老师这边而言,一个老师包含多个学生【一对多】;这是集合
  1. 测试多对一实例
    数据库表如下图所示:


    步骤一:构造学生实体类Student.java
package com.hpf.bean;

import lombok.Data;
@Data
public class Student {
    private int id;
    private String stuName;
    //每个学生都要关联一个老师
    private Teacher teacher;
}

步骤二:编写StudentMapper.java接口类

package com.hpf.dao;

import com.hpf.bean.Student;
import java.util.List;
public interface StudentMapper {
    //方式一:查询所有学生的信息,并且包含学生对应的老师的信息
    public List<Student> getStudent();
    //方式二:联表查询
    public List<Student> getStudent2();
}

步骤三:编写xml映射配置文件(方式一)

<mapper namespace="com.hpf.dao.StudentMapper">
    <select id="getStudent" resultMap="stu-tea">
        select * from student;
    </select>
    <resultMap id="stu-tea" type="student">
        <result property="id" column="id"/>
        <result property="stuName" column="stu_name"/>
        <!--对于复杂的属性,我们需要单独处理,处理的对象用association-->
        <association property="teacher" column="tea_id" javaType="Teacher" select="getTeacherById"/>
    </resultMap>
    <select id="getTeacherById" resultType="Teacher">
        select * from teacher where id=#{id};
    </select>
</mapper>

思路:
1.查询所有学生信息;
2.根据查询的学生id,寻找对应的老师信息。
这是sql语句的子查询方式,也就是嵌套查询。

编写xml映射配置文件(方式二)

<mapper namespace="com.hpf.dao.StudentMapper">
    <select id="getStudent2" resultMap="stu-tea2">
        select s.id,stu_name,tea_name
        from student s,teacher t
        where s.tea_id = t.id
    </select>
    <resultMap id="stu-tea2" type="Student">
        <result property="id" column="id"/>
        <result property="stuName" column="stu_name"/>
        <association property="teacher" javaType="Teacher">
            <result property="id" column="id"/>
            <result property="teaName" column="tea_name"/>
        </association>
    </resultMap>
</mapper>

思路:
sql语句的联表查询。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mybatis--sql多对一的处理 的相关文章

  • 显示过去 7 天 PHP 的结果

    我想做的是显示过去 30 天的文章 但我现有的代码不断给我一个 mysql fetch assoc 错误 然后追溯到我的查询 这是代码 sql mysql query SELECT FROM table WHERE DATE datetim
  • 自动将所有mysql表转储到单独的文件中?

    我想将每个 mysql 表转储到单独的文件中 手册指出其语法是 mysqldump options db name tbl name 这表明您事先知道表名称 我现在可以设置知道每个表名称的脚本 但是假设我在路上添加了一个新表并且忘记更新转储
  • PDO fetch() 失败时会抛出异常吗?

    有没有方法PDO语句 fetch http php net manual en pdostatement fetch php如果 PDO 错误报告系统设置为抛出异常 则在失败时抛出异常 例如 如果我设置 PDO ATTR ERRMODE g
  • 从数据库生成 XML 时出现 PHP 编码错误 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在尝试获取一个简单的 PHP 服
  • 将列的值添加到 LIKE 语句中?

    我有 3 个标签表 标签类别和使用过的标签 我想要获取所有标签的列表以及已使用标签的计数 所使用标签的格式是每个具有标签的文档 ID 的逗号分隔值 我一直在尝试类似的方法 但无法将tags tag 字段的值插入到LIKE 语句中 SELEC
  • 选择MySql表数据放入数组中

    我尝试从 mysql 捕获数据并将它们全部放入数组中 认为 users table id name code 1 gorge 2132 2 flix ksd02 3 jasmen skaod2 sql mysql query select
  • 在 MySQL 中分割逗号分隔值

    我正在尝试将字符串中以逗号分隔的 值拆分为多列 样本数据 COL1 COL2 COL3 000002 000003 000042 09 31 51 007 004 007 预期输出 Pno Cno Sno 000002 09 007 000
  • 更改Docker容器中的mysql密码

    我如何更改 docker 容器中的 root 密码 因为一旦我停止 mysql 服务 容器就会自动停止 我应该停止 mysql 容器并部署一个新容器吗 您可以使用正在运行的容器更改它docker exec session https doc
  • 在 Oracle 中使用触发器记录对表的更改

    我的一门课有一个项目 当我们的两个表发生更改时 我们需要创建一个日志 插入 更新 删除 我们需要使用Oracle触发器和PL SQL 在日志文件中 我们需要记录用户ID 日期时间 IP地址和事件 插入 更新 删除 我知道如何设置触发器 但我
  • PreparedStatement setnull方法中Types.INTEGER和Types.NULL的区别

    下面的说法有什么区别 PreparedStatement setNull 1 java sql Types NULL and PreparedStatement setNull 1 java sql Types INTEGER 第一个指示驱
  • 使用MySQL计算单个表中借方和贷方的余额

    下面的 MySQL 表包含带有关联金额的借方或贷方 操作 如何选择具有非零 余额 的所有 CLIENT ID 我尝试将表连接到自身以计算所有借方和贷方总额 但有些东西无法正常工作 CLIENT ID ACTION TYPE ACTION A
  • 本地数据库缓存的最佳实践?

    我正在开发一个应用程序 该应用程序的部分内容依赖于 MySQL 数据库 在某些情况下 应用程序将在互联网连接 UMTS 有限的环境中运行 特别是延迟较高的环境 应用程序的用户能够登录 并且应用程序用户界面的大部分内容都是从 MySQL 数据
  • 如何修复 InterfaceError: 2003: 无法连接到“127.0.0.1:3306:3306”上的 MySQL 服务器(11001 getaddrinfo 失败)

    我的MySQL连接成功但是遇到这个界面错误 import mysql connector db mysql connector connect host 127 0 0 1 3306 user root passwd teja databa
  • Quartz.NET 设置 MisfireInstruction

    我正在使用 Quartz NET 在 C 中工作 并且在 CronTrigger 上设置失火指令时遇到问题 我正在运行安装了 Quartz DB 的 SQL 后端 我有以下代码 可以很好地创建作业和运行调度程序 IScheduler sch
  • PHP/MySQL:如何在网站中创建评论部分[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我不会问 如何使用 PHP MySQ
  • 如果执行没有事务的删除语句,是否会删除部分内容?

    如果表myTable包含100000000条记录 我执行DELETE FROM myTable 没有开始交易并且出现问题 例如服务器电源故障 会删除一些记录吗 否 如果数据库引擎符合ACID http en wikipedia org wi
  • Clojure MySQL 语法错误异常(“[...] 靠近 '???????????????' [...]”)

    除了建立连接之外 我在使用 clojure contrib sql 做任何事情时都遇到困难 我有一个 mysqld 在 localhost 3306 上运行 数据库名为clj db 用户 clj user localhost 和密码 clj
  • 消息 102,级别 15,状态 1,第 1 行“ ”附近的语法不正确

    我试图从临时表中查询 但不断收到此消息 Msg 102 Level 15 State 1 Line 1 Incorrect syntax near 有人能告诉我问题是什么吗 是因为要转换吗 查询是 select compid 2 conve
  • 从数据库 MYSQL 和 Codeigniter 获取信息

    如果你们需要其他信息 上一个问题就在这里 从数据库中获取信息 https stackoverflow com questions 13336744 fetching information from the database 另一个更新 尽
  • Oracle:如果表存在

    我正在为 Oracle 数据库编写一些迁移脚本 并希望 Oracle 有类似于 MySQL 的东西IF EXISTS构造 具体来说 每当我想删除 MySQL 中的表时 我都会执行类似的操作 DROP TABLE IF EXISTS tabl

随机推荐

  • flutter 实现一个图片选择控件

    在最近的开发中 需要做一个选择图片 包括拍照和相册选择 然后上传的功能 我们的项目是iOS原生和flutter混编的 首先用flutter实现这个页面 选择了第三方插件image picker 下面先看一下效果图 下面我们开始一步一步实现这
  • Netty和Tomcat的区别、性能对比

    文章目录 一 Netty和Tomcat有什么区别 二 为什么Netty受欢迎 三 Netty为什么并发高 一 Netty和Tomcat有什么区别 Netty和Tomcat最大的区别就在于通信协议 Tomcat是基于Http协议的 他的实质是
  • 区块链入门学习笔记(二)

    1 什么是区块链 Blockchain 区块链是由节点参与的分布式数据库系统 区块链是由一串使用密码学方法产生的数据块组成的 每个区块都包含了上一个区块的哈希值 从创始区块开始连接到当前区 块 从而形成块链 链 指的是一个庞大而完整的数据库
  • 内窥镜去反光的论文整理

    文章目录 内窥镜去反光的论文整理 Detection and correction of specular reflections for automatic surgical tool segmentation in thoracosco
  • YSlow--Web前端性能测试工具

    1 介绍 YSlow是Yahoo发布的一款基于FireFox的插件 这个插件可以分析网站的页面 并告诉你为了提高网站性能 如何基于某些规则进行优化 它可以分析任何网站 并为每一个规则产生一个整体报告 如果页面可以进行优化 则YSlow会列出
  • mysql workbench 错误  Error Code: 1046. No database selected Select the default DB to be used by doubl

    mysql workbench 错误 Error Code 1046 No database selected Select the default DB to be used by double clicking its name in
  • mac 本地打安卓包 platforms;android-28 Android SDK Platform 28

    A newer version of the Android SDK is required To update run Users xxx Library Android sdk tools bin sdkmanager update 转
  • 自己理解的智能指针

    看安卓内核 第一章就碰到智能指针了 看了网上的一些文章 自己实践了一下 自己的体会 普通指针直接为某个具体类型分配空间 对该空间的管理直接由指针来操作 T p new T t 智能指针相当于对该空间进行封装 智能指针实际是一个类 share
  • SPOJ QTREE4 Query on a tree IV (边分治 + 堆)

    题意 给定一棵树 节点有黑白两种颜色 有正负的边权 有两种操作 一种是修改反转某个节点的颜色 另一种是询问树上最远的两个白色节点的距离 思路 树剖 堆维护的代码还是没敢去码 以后再补了 这里用边分治 堆来维护 边分治的优点比起点分支来说 优
  • 编写一个程序,提示用户输入一周工作的小时数,然后打印工资总额、税金和净收入。

    编写一个程序 提示用户输入一周工作的小时数 然后打印工资总额 税金和净收入 首先做如下假设 基本工资 10 00美元 小时 加班 超过40小时 1 5倍的时间 税率 前300美元为15 续150美元为20 余下的为25 用 define定义
  • 【马士兵】Python基础--10(集合)

    Python基础 10 文章目录 Python基础 10 什么是集合 集合的创建 集合的相关操作 集合间的关系 集合的数据操作 集合生成式 列表 字典 元组 集合总结 什么是集合 集合的创建 集合中元素不允许重复 集合中元素无序 s 23
  • Android 去掉Button自带边框

    android background null 将边框去掉
  • Vue - 安装less-loader

    文章目录 直接安装 遇到问题 与webpack版本不兼容 查看当前使用webpack版本 查看所有webpack版本 查看less loader历史版本 安装兼容版本less loader 直接安装 npm i less loader 下面
  • 字节流和字符流的转化

    Java中字节流和字符流是可以相互转换的 OutputStreamWriter 将字节输出流转换成字符输出流 是 writer 的子类 InputStreamReader 将字节流转换成字符输入流 是Reader 的子类 一般操作输入输出内
  • AOP JoinPoint中的方法

    获取参数的值数组 Object args point getArgs 1 参数的值 获取目标对象 被加强的对象 Object target point getTarget 获取signature 该注解作用在方法上 强转为 MethodSi
  • MySQL卸载不干净回不到初始安装页面(MySQL Connector Net卸载不了),重装报错Database initialization failed等问题解决办法

    首先 这篇文章适合 1 常规卸载方法无法卸载干净导致重装始终回不到初始安装页面 即回不到下图初始状态 始终是welcome back 这部分我会单独讲一下MySQL Connector Net卸载不了的问题 2 重装过程中Database
  • java之socket编程(NIO)

    效果展示 原理分析 NIO 非阻塞型 IO 自从 jdk 1 4 之后 增加了 nio 库 支持非阻塞型 IO 操作 代码展示 package NIO import java net InetSocketAddress import jav
  • 使用 Styled Components 编写样式化组件

    本文已整理到 Github 地址 blog 如果我的内容帮助到了您 欢迎点个 Star 鼓励鼓励 我希望我的内容可以帮助你 现在我专注于前端领域 但我也将分享我在有限的时间内看到和感受到的东西 Styled Components 是一个 C
  • 【ios开发技术】Swift 语言深入--Swift设计模式 (2/2)

    Getting Started 让我们开始 你可以下载the project source from the end of part 1与我们共同来探索 这是你在第一部分结束时完成的音乐库App样品 应用程序的最初设计包括在屏幕的顶端上上水
  • Mybatis--sql多对一的处理

    我们先来看看下图所示的例子 学生和老师之间就是一种多对一的关系 对于学生这边而言 多个学生关联一个老师 多对一 这是关联 对于老师这边而言 一个老师包含多个学生 一对多 这是集合 测试多对一实例 数据库表如下图所示 步骤一 构造学生实体类S