Mybatis一对多查询

Mybatis 一对多查询 一个学习编程的小吴同学 阅读详情

架构

在这里插入图片描述
对于老师而言就是一对多

环境搭建

数据库

CREATE TABLE `student`(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(20) DEFAULT NULL 
)ENGINE=INNODB DEFAULT CHARSET=utf8;

INSERT INTO student VALUES (1,"李老师");

CREATE TABLE `student` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(20) DEFAULT NULL ,
`tid` INT(4) NOT NULL,
KEY `fk_tid` (`tid`),
CONSTRAINT fk_tid FOREIGN KEY(`tid`) REFERENCES `teacher`(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8;

INSERT INTO student VALUES
(1,"小红",1),
(2,"小绿",1),
(3,"小灯",1),
(4,"小勿",1),
(5,"小闯",1);

在这里插入图片描述

实体类

Student

package pojo;

import lombok.Data;

@Data
public class Student {
    private int id;
    private String name;
    private int tid;
}

Teacher

package pojo;

import lombok.Data;

import java.util.List;

@Data
public class Teacher {
    private int id;
    private String name;

    private List<Student> Students;
}

接口

StudentMapper

package dao;

import pojo.Student;

import java.util.List;

public interface StudentMapper {

}

TeacherMapper

package dao;

import pojo.Teacher;

public interface TeacherMapper {
    Teacher getTeacher(int id);

    Teacher getTeacher2(int id);
}

Mapper配置文件
StudentMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao.StudentMapper">

</mapper>

TeacherMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao.TeacherMapper">
    <select id="getTeacher" resultMap="TeacherStudent">
        select s.id sid,s.name sname,t.name tname,t.id,tid from student s,teacher t where s.tid=t.id and tid=#{id};
    </select>
    <resultMap id="TeacherStudent" type="Teacher">
        <result column="tid" property="id" />
        <result column="tname" property="name" />
        <collection property="Students" ofType="Student">
            <result property="id" column="sid" />
            <result property="name" column="sname" />
            <result property="tid" column="tid" />
        </collection>
    </resultMap>

    <select id="getTeacher2" resultMap="TeacherStudent2">
        select * from teacher where id=#{id};
    </select>
    <resultMap id="TeacherStudent2" type="Teacher">
        <collection property="Students" javaType="ArrayList" ofType="Student" select="getStudentByTeacherId" column="id" />
    </resultMap>
    <select id="getStudentByTeacherId" resultType="Student">
        select * from student where tid=#{id};
    </select>
</mapper>

按结果集查询

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao.TeacherMapper">
    <select id="getTeacher" resultMap="TeacherStudent">
        select s.id sid,s.name sname,t.name tname,t.id,tid from student s,teacher t where s.tid=t.id and tid=#{id};
    </select>
    <resultMap id="TeacherStudent" type="Teacher">
        <result column="tid" property="id" />
        <result column="tname" property="name" />
        <collection property="Students" ofType="Student">
            <result property="id" column="sid" />
            <result property="name" column="sname" />
            <result property="tid" column="tid" />
        </collection>
    </resultMap>
</mapper>

这种方式就是相对于结果集做处理来的

子查询

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao.TeacherMapper">
    <select id="getTeacher2" resultMap="TeacherStudent2">
        select * from teacher where id=#{id};
    </select>
    <resultMap id="TeacherStudent2" type="Teacher">
        <collection property="Students" javaType="ArrayList" ofType="Student" select="getStudentByTeacherId" column="id" />
    </resultMap>
    <select id="getStudentByTeacherId" resultType="Student">
        select * from student where tid=#{id};
    </select>
</mapper>
MyBatis注解开发之一对多查询 实现复杂关系映射之前我们可以在映射文件中通过配置来实现,使用注解开发后,我们可以使用@Results注解,@Result注解,@One注解,@Many注解组合完成复杂关系的配置 一对多查询的需求:查询一个课程,与此同时查询出该该课程对应的学生信息 对应的sql语句: 1.3 创建StudentMapper接口 1.4 使用注解配置Mapper 1.5 测试类 运行结果如下:... 阅读详情

相关推荐

mybatis关联查询问题(一对多、多对一)

mybatis关联查询问题(一对多、多对一) 博客系统源码

Mybatis一对多查询的两种姿势,你值得拥有(收藏就完事了)

文章目录数据库表准备实例演示方法一:联合查询ResultMap映射方法二:子查询映射总结 前言 最近碰到了Mybatis一对多查询的场景,在这里总结对比下常见的两种实现方式。 本文以常见的订单表和订单详情表来举例说明; 数据库表准备 订单表 tbl_order 订单详情表 tlb_order_detail ps: 一个订单关联多个订单详情,通过order_no订单号关联;   实例演示 方法一:联合查询ResultMap映射 sql直接关联查询,然后结果集通过resultMap的c

臭小子的博客 3万+

热测试芯片(TTC)在ASIC热设计中的关键作用与应用

热测试芯片(TTC)是半导体热管理领域的重要工具,通过物理仿真技术精确测量芯片温度分布。其核心原理是利用金属膜电阻和二极管传感器阵列,实现微米级空间分辨率和毫秒级动态响应。在工程实践中,TTC能有效预防热岛效应、优化散热设计,特别适用于AI加速芯片、3D堆叠封装等先进半导体器件。相比传统热仿真软件,TTC提供更真实的温度数据,帮助工程师在流片前发现潜在热问题。随着1mm微型单元技术的突破,TTC已能检测0.3mm²微小区域的热变化,满足GaN/SiC等宽禁带半导体器件的测试需求。

weixin_33688840的博客 508

MyBatis映射(一对多查询)

2.5.1.3 OrdersMapper.xml(见上图)2.5.1.4 UsersMapper.xml(见上图)2.5.2.1 UsersMapper.java添加。2.5.2.2 UsersMapper.xml添加。2.5.2.3 UsersTest.java添加。2.5.2 嵌套结果方式。2.5.1.6 测试结果。2.5.2.4 测试结果。

m0_64400783的博客 5163

全双工AI语音交互:从原理到实践,构建实时对话系统

语音交互技术正从传统的半双工模式向全双工模式演进,以实现更自然、实时的对话体验。全双工交互的核心原理在于模拟人类电话通话,允许双方同时发送和接收音频流,这需要流式语音识别(Streaming ASR)和实时自然语言理解(Real-time NLU)技术的深度整合。其技术价值在于显著降低交互延迟,支持智能打断(Barge-in),从而提升人机对话的流畅度和自然度。在应用场景上,全双工技术是智能助手、实时翻译、车载语音及无障碍交互等领域的关键突破。本文以微软MAI Realtime等模型为例,探讨如何利用开源技

weixin_33693070的博客 404

用STM32F407做个USB声卡:从CubeMX配置到播放录音全功能实战(附源码)

本文详细介绍了如何使用STM32F407开发板实现USB音频设备的全功能实战,包括CubeMX配置、硬件连接、音频流处理和性能优化。通过双缓冲DMA机制和音频数据处理流程,开发者可以构建高质量的USB声卡系统,适用于录音和播放场景。附源码,助力快速上手STM32音频开发。

weixin_30301449的博客 516

MyBatis一对多查询

1、创建maven工程,搭建mybatis框架环境 mybatis-config.xml配置文件以及db。properties配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> &l

weixin_50616848的博客 482

Pika Labs vs Runway ML:零基础小白如何选择最适合自己的AI视频生成工具?

本文详细对比了Pika Labs和Runway ML两款AI视频生成工具,从操作界面、生成效果、隐藏成本、工作流适配性和未来兼容性五个维度进行分析。Pika Labs适合零基础用户快速生成社交媒体短内容,而Runway ML则更适合专业级视频制作。帮助用户根据自身需求选择最适合的AI视频生成工具。

wood5的博客 599

Mybatis高级查询-一对多查询

tb_user:用户表tb_order:订单表tb_item:商品表tb_orderdetail:订单详情表【表关系】1.tb_user和 tb_order表关系tb_user 《==》 tb_order:一对多, 一个人可以下多个订单tb_order 《==》 tb_user:一对一,一个订单只能属于一个人结论:tb_user和tb_order属于一对多的关系,需要将一方tb_user的主键作为多方tb_order的外键维护关系2.tb_order 和 tb_item 表关系。

2301_80237574的博客 3616

STM32与AD7606的SPI通信优化:提升高精度数据采集效率

本文深入探讨了STM32与AD7606的SPI通信优化策略,旨在提升高精度数据采集系统的效率与稳定性。文章从硬件连接、电源去耦、PCB布局等基础环节入手,详细解析了软件驱动中SPI模式配置、DMA应用及精准时序控制等关键优化技术,并提出了系统级的性能提升方案,帮助开发者解决高速采样下的数据跳动、效率瓶颈等实际问题。

weixin_29192211的博客 392

MyBatis:使用 MyBatis 实现多表查询(多对一和一对多)、动态 SQL、缓存

详细介绍了使用 MyBatis 实现多表查询(多对一和一对多)、动态 SQL 以及缓存的相关内容

taiyang3285的博客 3991

【HALCON工业视觉应用探索】02. C# + Halcon铸件毛刺机器人打磨引导:点云处理从实验室到工业现场的全流程落地

摘要:铸件毛刺的自动化打磨是机械制造领域的重要难题,其随机性(高度0.1-3mm)和复杂工况导致人工打磨效率低(3分钟/件)、工伤率高。本文基于Halcon 24.11与.NET 6,构建了一套点云处理方案:通过线激光扫描仪获取三维点云,经预处理、毛刺检测、路径规划三大模块,引导机器人完成打磨。虚拟实验测试显示,对高度>1mm的毛刺检出率达100%,定位误差±0.08mm,但工业现场受油污、粉尘影响,性能降至检出率68-75%、处理时间>45秒。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1128

mybatis一对多查询案例

mybatis一对多查询案例 (1)关联查询的中的一对多是指,站在用户的角度看,一个用户会存在多个订单跟他对应。 (2)数据来自两个表,使用连接查询,需要输出每一个用户有多少个订单 (3)查询结果使用collection标签 映射List<元素> 这边用一个用户可以下多个订单为案例进行业务代码的编写(这边mybatis环境的配置文件就省略了,只上传了关键的业务代码) 数据库表: user表 order表: 编写测试UserTest package com.lbl.order; impo

水巷石子的博客 4925

Windows窗口编程中的WM_PAINT、WM_ERASEBKGND、InvalidateRect、UpdateWindow、BeginPaint和EndPaint等函数详解

Windows窗口编程中的WM_PAINT、WM_ERASEBKGND、InvalidateRect、UpdateWindow、BeginPaint和EndPaint等函数详解

dvlinker的技术专栏 7165

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

MyBatis一对多查询方式

resultMap在 MyBatis 的 Mapper XML 文件中,定义一个resultMap,使用标签来表示一对多关系。

qq_48763502的博客 1887

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

mybatis 一对多查询

MyBatis 是一个优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。对于一对多查询,MyBatis 提供了很好的支持。 假设我们有一个 User 对象,每个 User 有多个 Order 对象,这是一个典型的一对多关系。

阿杰 3754

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

mybatis一对多查询

一、一对多查询 A表与B表是一对多关系: A表 a ad 1 1 B表 b a_id 1 1 2 1 3 1 A表对应的实体类EntityA,B表对应的实体类EntityB public class EntityA { private Integer a; private Integer ad; } public class EntityB{ private Integer b; private Integer aId; } public clas

tian_yu_2012的博客 5318

MyBatis高级查询:一对多查询详解

一对多查询,也称为“主从查询”或“嵌套查询”,是指在一个数据库查询中,一个主表记录可以关联多个从表记录的情况。在 MyBatis 中,一对多查询通常通过 resultMap 和 association/collection 标签来实现。resultMap:resultMap 是 MyBatis 中用于定义如何从数据库结果集映射到 Java 对象的一个高级特性。它允许你完全控制如何将结果集中的列映射到对象的属性上。:用于处理一对一的关联关系。collection:用于处理一对多的关联关系。

m0_70066267的博客 1672

JavaWeb——mybatis一对一、一对多查询

一、引言       mybatis查询基本返回数据基本用到的都是resulttype与resultmap,resulttype必须po类与sql字段一致,而resultmap可以不一致通过配置映射。       本篇文章一是要讲解resulttype与resultmap如何使用;       二是重点讲解一对一与一对多查询resultmap的使用方便之处,举例:在查询每个班级有多少

xcymorningsun的专栏 3372

mybatis中的一对多查询

mybaits中的一对一,一对多查询 1. 一对一查询 1 .实体类 @Data @AllArgsConstructor @NoArgsConstructor public class Emp { // 员工的id private int eid; // 员工的姓名 private String ename; // 员工的部门id(作为id) private int did; // 员工所属的部门 private Dept dept; } 2. 编写s

weixin_45785893的博客 311

Mybatis 一对一和一对多查询

Mybatis 一对一和一对多查询 首先创建两个实体类(尽量实现全部的getter和setter方法,防止后续出错,此处使用Lombok) @Data public class Order { private Integer no; private Integer userId; private Integer goodsId; private Integer goodsAmount; } @Data public class User { private Inte

老洋人的博客 814

[简单的一对多查询]Mybatis实现对数据库的一对多查询

Mybatis一对多查询

FlymaAqi,芜湖,飞马阿起,passion!passion! 1849

MyBatis 一对多查询详解

本文详细介绍了MyBatis中一对多查询的两种实现方式。以教师(Teacher)和学生(Student)为例,通过数据库表设计和实体类定义建立了关联关系。重点讲解了嵌套结果映射(JOIN查询)和嵌套查询(分步查询)两种实现方案:前者通过单次SQL完成,适合数据量小的场景;后者采用分步查询,支持延迟加载,更适合大数据量情况。文章对比了两种方式的性能特点和适用场景,并提供了调用示例和注意事项,帮助开发者根据实际需求选择合适的一对多查询方案。

cyf123__的博客 509

mybatis执行一对多查询

一对多查询,使用两张表里的id值一样进行查询,语句如下: select e.uid,e.age,e.sex,d.did,d.dname from tb_user e left join tb_name d on e.uid=d.did 数据表如下,tb_usertb_name 用mybatis执行一对多查询 实体类如下 User package com.zhu.bean; //定义个人信息 public class User { private Integer uid; private Stri

weixin_43360488的博客 167
上一篇: Mybatis 多对一查询
下一篇: Mybatis 动态SQL
小小代码熊
博客等级 码龄7年 5粉丝 77原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值