Mybatis快速上手3 关联表查询一:一对一表关联查询

Mybatis快速上手4 关联表查询二:一对多表关联查询 Mybatis快速上手4 一对多表关联查询环境 :Eclipse+Tomcat9+JDK10+Mybatis-3.1.1、Navicat需求代码建库,建表config.xmluserMapper.xmlClasses2.javaStudent.javaJTest4.java 环境 :Eclipse+Tomcat9+JDK10+Mybatis-3.1.1、Navicat test1~8分别对应八章,本章使用包test4、tool,文件config.xml、db.properties、log4j.proper 阅读详情

其他章节及开发包:https://blog.youkuaiyun.com/XIMAX/article/details/106255196

环境 :Eclipse+Tomcat9+JDK10+Mybatis-3.1.1、Navicat

在这里插入图片描述
test1~8分别对应八章,本章使用包test3、tool,文件config.xml、db.properties、log4j.properties

需求

1.一个教师只带一个班
2.一个班只有一个老师
3.根据班级id查询班级信息(带老师的信息)

代码

建库,建表

CREATE TABLE teacher(
 t_id INT PRIMARY KEY AUTO_INCREMENT, 
 t_name VARCHAR(20)
);
CREATE TABLE class(
 c_id INT PRIMARY KEY AUTO_INCREMENT, 
 c_name VARCHAR(20), 
 teacher_id INT
);

ALTER TABLE class ADD CONSTRAINT fk_teacher_id FOREIGN KEY (teacher_id) REFERENCES teacher(t_id); 
 
INSERT INTO teacher(t_name) VALUES('LS1');
INSERT INTO teacher(t_name) VALUES('LS2');
 
INSERT INTO class(c_name, teacher_id) VALUES('bj_a', 1);
INSERT INTO class(c_name, teacher_id) VALUES('bj_b', 2);

config.xml

<?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">
<configuration>
  <properties resource="db.properties"></properties>
  <typeAliases>
    <package name="com.rjxy.test3"/>
 <typeAliases>
 
 <typeAliases>
   <package name="com.rjxy.test2"/>
 <typeAliases>
 <environments default="development">
   <environment id="development">
    <transactionManager type="JDBC" />
    <dataSource type="POOLED">
     <property name="driver" value="${driver}" />
     <property name="url" value="${url}" />
     <property name="username" value="${username}" />
     <property name="password" value="${password}" />
    </dataSource>
   </environment>
  </environments>  
 
 <mappers>
   <mapper resource="com/rjxy/test3/userMapper.xml"/>
 <mappers>
</configuration>

userMapper.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.rjxy.test3.userMapper">
<!-- 方式一:嵌套结果:使用嵌套结果映射来处理重复的联合结果的子集封装联表查询的数据(去除重复的数据) -->
<select id="getClass" parameterType="int" resultMap="ClassResultMap">
  select * from class c,teacher t where c.teacher_id=t.t_id and c.c_id=#{id}
 </select>
 <resultMap type="Classes" id="ClassResultMap">
  <id property="id" column="c_id"/>
  <result property="name" column="c_name"/>
  <association property="teacher" javaType="Teacher">
   <id property="id" column="t_id"/>
   <result property="name" column="t_name"/>
  </association>
 </resultMap>
 
<!-- 方式二:嵌套查询:通过执行另外一个SQL映射语句来返回预期的复杂类型-->
<select id="getClass2" parameterType="int" resultMap="getClass2Map">
  select * from class where c_id=#{id}
 </select>
 <select id="getTeacher" parameterType="int" resultType="Teacher">
  select t_id id,t_name name from teacher where t_id=#{id}
 </select>
 <resultMap type="Classes" id="getClass2Map">
  <id property="id" column="c_id"/>
  <result property="name" column="c_name"/>
  <association property="teacher" column="teacher_id" select="getTeacher">
  </association>
 </resultMap> 
</mapper>

Classes.java

package com.rjxy.test3;
public class Classes {
 private int id;
 private String name;
 private Teacher teacher;
 //省略 get、set 及 toString 方法
 }

Teacher.java

package com.rjxy.test3;
public class Teacher {
 private int id;
 private String name;
 
 public Teacher() {
  super();
 }
 public Teacher(int id, String name) {
  super();
  this.id = id;
  this.name = name;
 }
 //省略 get、set 及 toString 方法
}

JTest3.java

package com.rjxy.test3;
import java.io.IOException;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import com.rjxy.tool.MybatisUtils;
public class JTest3 {
 public static void main(String[] args) throws IOException {
  SqlSessionFactory factory = MybatisUtils.getFactory();
  SqlSession session = factory.openSession();

  String statement="com.rjxy.test3.userMapper.getClass";

  Classes c = session.selectOne(statement,2);
  System.out.println(c);
  System.out.println("------------------");
 
  String statement2 = "com.rjxy.test3.userMapper.getClass2";
  Classes s = session.selectOne(statement2,2);
  System.out.println(s);
  session.close();
 }
}

其它

其它文件与该系列第一篇相同 链接: https://blog.youkuaiyun.com/XIMAX/article/details/106244701

结果

2020-05-20 23:31:45,094 [main] DEBUG [com.rjxy.test3.userMapper.getClass] - ooo Using Connection [com.mysql.cj.jdbc.ConnectionImpl@58ce9668]
2020-05-20 23:31:45,094 [main] DEBUG [com.rjxy.test3.userMapper.getClass] - ==>  Preparing: select * from class c,teacher t where c.teacher_id=t.t_id and c.c_id=? 
2020-05-20 23:31:45,195 [main] DEBUG [com.rjxy.test3.userMapper.getClass] - ==> Parameters: 2(Integer)
Classes [id=2, name=bj_b, teacher=Teacher [id=2, name=LS2]]
------------------
2020-05-20 23:31:45,488 [main] DEBUG [com.rjxy.test3.userMapper.getClass2] - ooo Using Connection [com.mysql.cj.jdbc.ConnectionImpl@58ce9668]
2020-05-20 23:31:45,488 [main] DEBUG [com.rjxy.test3.userMapper.getClass2] - ==>  Preparing: select * from class where c_id=? 
2020-05-20 23:31:45,488 [main] DEBUG [com.rjxy.test3.userMapper.getClass2] - ==> Parameters: 2(Integer)
2020-05-20 23:31:45,488 [main] DEBUG [com.rjxy.test3.userMapper.getTeacher] - ooo Using Connection [com.mysql.cj.jdbc.ConnectionImpl@58ce9668]
2020-05-20 23:31:45,488 [main] DEBUG [com.rjxy.test3.userMapper.getTeacher] - ==>  Preparing: select t_id id,t_name name from teacher where t_id=? 
2020-05-20 23:31:45,488 [main] DEBUG [com.rjxy.test3.userMapper.getTeacher] - ==> Parameters: 2(Integer)
Classes [id=2, name=bj_b, teacher=Teacher [id=2, name=LS2]]
若依框架实战:基于Mybatis与ruoyi-vue实现OA系统一对一关联查询 本文详细介绍了如何在若依框架(ruoyi-vue)中基于Mybatis实现OA系统的一对一关联查询。通过数据库表设计、SQL优化、代码生成器使用、Mybatis映射配置及前端Vue组件展示等实战步骤,帮助开发者掌握高效的数据关联查询技术,提升OA系统开发效率。 阅读详情

相关推荐

保姆级避坑指南:用Docker在Ubuntu 22.04上部署Isaac Sim 5.1.0,搞定宇树G1仿真环境

本文提供了一份详细的保姆级避坑指南,帮助用户在Ubuntu 22.04上通过Docker部署Isaac Sim 5.1.0,并成功搭建宇树G1仿真环境。文章涵盖了环境准备、Docker与NVIDIA容器工具包的配置、Isaac Sim镜像的定制化拉取与配置,以及宇树G1仿真环境的实战调试,旨在帮助开发者高效解决部署过程中的常见问题。

weixin_33728268的博客 207

Mybatis多表关联查询(一对多关联查询)

Mybatis多表关联查询(一对多关联查询)

qq_58258855的博客 1万+

一文详解声码器

声码器(Vocoder)是语音信号处理领域的核心技术,其本质是通过“分析 - 参数化 - 合成” 的闭环流程,实现语音的高效编码、转换或生成。它不仅是早期语音通信的关键工具,更是现代 AI 语音技术(如 TTS、语音转换)的核心组件。以下从原理、技术分类、关键模块、应用及发展趋势展开详细解析。

weixin_41413777的博客 1351

Mybatis中如何实现一对一,一对多的关联查询?

MyBatis实现一对一、一对多关联查询的方式

m0_67942533的博客 1万+

Autosar CAN 网络管理标准文档

Autosar CAN 网络管理标准文档

蚂蚁小兵 924

什么是 SAP PCE?

SAP Private Cloud Edition 是一种基于云计算的部署模式,它结合了公有云的灵活性和私有云的安全性,为企业提供了量身定制的云服务。在 PCE 环境中,SAP 托管和维护客户的应用系统(如 SAP S/4HANA、SAP SuccessFactors 或 SAP BW/4HANA),同时客户拥有更高的定制化权限。专属环境:每个客户在云中拥有独立的资源,这保障了更高的安全性和性能。全面托管:SAP 提供基础架构、系统管理和更新服务,降低了客户的运维成本。灵活扩展。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2241

MyBatis的关联查询

实体间的关系(拥有 has、属于 belong)OneToOne:一对一关系(account ←→ user)OneToMany:一对多关系(user ←→ account)ManyToMany:多对多关系(user ←→ role)什么是关联查询当访问关系的一方时,如果需要查看与之关联的另一方数据,则必须使用表链接查询,将查询到的另一方数据,保存在本方的属性中关联查询的语法指定“一方”关系时(对象),使用指定“多方”关系时(集合),使用下面以案例的形式展现给大家。

2301_77072336的博客 1743

Explorer.exe系统错误,电脑重启后刚开始一段时间正常,过一会桌面任务栏就卡死,可以打开任务管理器

联想E14Win10专业版。

本博客,博文仅代表个人操作经验,不能完全解决你的问题,仅供参考,佛系回复。 8050

mybatis : 一对多关联查询

== Row: 3, 小张, 24, null, null, null, null。

Candyz7的博客 973

Ambari 3.0+BigTop 3.3集群部署实战

Ambari 3.0+BigTop 3.3集群部署

docsz的博客 606

2026华为OD机试(C++)真题【E卷+A卷+B卷+C卷+D卷】目录+在线OJ

华为OD机试真题题库【E卷+A卷+B卷+C卷+D卷】目录,C++实现。

MISAYAONE的博客 20万+

MyBatis里如何实现一对多关联查询

在MyBatis中实现一对多关联查询可通过两种方式:1)在XML映射文件中使用`<collection>`标签,通过嵌套结果集(联表查询)或嵌套查询(分次查询)关联子表数据;2)使用注解方式通过`@Results`和`@Result`注解,结合`@Many`指定子查询方法。需在实体类中定义包含多个子对象的集合属性,并通过column参数传递关联字段。

weixin_46084191的博客 1459

spring boot mybatis查询关联表数据,一对一,一对多快速查询

查询主表对应的一对一关联表数据,以及主表对应的关联表一对多数据 以下列场景为例: 标准奖励制度表——标准制度Id 唯一主键 申报一项奖励——关联标准制度Id 申报奖励附件表——关联 申报奖励表Id 需求:查询出某一条申报的奖励的所有资料和附件信息,同时查出标准制度的详细内容 实现: 标准奖励表VO所继承实体类文件 PointsStandard.java(省去get、set 方法) ** * 制...

zb2741747581的博客 1078

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

结合mybatis-plus 实现实体操作多表关联查询

项目地址:github # multipleselect java mybatis 实现简单多表通用查询 ### 简介 实现项目中比较基本的多表通用查询。 ​ 实现简单的实体类操作多表, 首先你的项目是使用了mybatis-plus 才可以使用。 ​ 不做任何更改,也不会对项目产生任何影响,与手写XML 功能一样。 ​ 通过解析实体,调用通用的...

mryaj的博客 3万+

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

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

MyBatis多表查询实战:从一对一、一对多到多对多关系映射详解

在关系型数据库应用开发中,多表关联查询是处理复杂业务逻辑的核心技术之一。其基本原理是通过SQL的JOIN操作,将分散在不同表中的数据根据关联关系进行连接,从而在一次查询中获取完整的业务视图。这项技术的核心价值在于,它能够有效减少数据库访问次数,提升数据检索效率,并保证数据的一致性。在实际应用场景中,无论是电商平台的订单与用户信息关联,还是企业管理系统中的部门与员工数据整合,都离不开高效的多表查询。MyBatis作为Java领域广泛使用的持久层框架,通过其强大的ResultMap配置,特别是associati

weixin_33738982的博客 364

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

MyBatis-Plus 多表关联分页

经常会遇到列表页要关联几个表查询,主表只保存关联表的ID,要显示关联表的ID,则需要查询列表时一起查出来。使用MyBatis-Plus可以使用多种方式联合查询。

Tiger_Paul的博客 2636

java后台两个表关联查询_multipleselect

multipleselectjava mybatis 实现简单多表通用查询中后台 vue ElementUI 組件版(文檔地址)[http://115.159.65.195:8080/vefdoc/#/start]歡迎交流简介实现项目中比较基本的多表通用查询。​实现简单的实体类操作多表, 首先你的项目是使用了mybatis-plus 才可以使用。​ 不做任何更改,也不会对项目产生任何影响,与手写...

weixin_36317800的博客 1693

Springboot3 | MyBatis-Plus 多表查询极简实践:宠物管理系统场景落地

MyBatis-Plus 多表查询的核心是“用 MP 封装的条件构造器简化关联逻辑”,无需陷入复杂的配置和插件中。本文通过宠物管理系统的 3 个高频场景,展示了“注解映射 + 条件构造器 + 简单映射”的极简方案,既满足业务需求,又保持了代码的简洁性和可读性。

张较瘦 1613

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

视频地址:http://edu.51cto.com/sd/be679 在Mybatis中的管理表查询这里主要介绍的是一对一和一对多的关联查询的resultMap的管理配置查询,当然你也可以用包装类来实现。不过这里不说,做关联查询的步骤可以简单的总结为以下的几步:     1.分析出表和表之间的关联关系     2.Sql语句的写法     3.在实体类中把附表的信息添加到主查询表中   ...

weixin_30954265的博客 178

别再手动写VO了!用若依框架的代码生成器搞定Mybatis一对一关联查询(附实战避坑)

本文详细介绍了如何利用若依框架(Ruoyi-Vue)的代码生成器自动化处理Mybatis一对一关联查询,从数据库表设计到代码生成、关联关系处理及前端适配的全流程。通过实战案例和避坑指南,帮助开发者高效实现关联查询功能,避免常见错误,提升开发效率。

weixin_29288313的博客 237

Mybatis快速上手及开发工具

该系列共8章7篇,7、8章为1篇 环境 :Eclipse+Tomcat9+JDK10+Mybatis-3.1.1、Navicat 第一章 Mybatis的CRUD操作:链接: https://blog.youkuaiyun.com/XIMAX/article/details/106244701 第二章 字段名和属性名不一致问题:链接: https://blog.youkuaiyun.com/XIMAX/article/details/106246238 第三章 一对一关联表查询:链接: https://blog.youkuaiyun.com

XIMAX的博客 279

Mybatis 多表关联查询,快速添加返回类型

1.在model中添加关联表的model private DrugpurProcurecatalog drugpurProcurecatalog;//商品表 private DrugpurSource drugpurSource;//来源表 2.在mapper文件resultMap标签中添加associationb标签 resultMap="com.hsnn.medstgmini.dr

菜鸡的博客自己看 1205

告别硬编码SQL:mybatis-plus-join 实现多表关联查询的优雅实践

本文详细介绍了如何使用mybatis-plus-join实现多表关联查询的优雅实践,告别硬编码SQL带来的维护难题。通过LambdaWrapper和QueryWrapper的对比分析,展示了类型安全与灵活性的平衡,并提供了处理一对多关系、动态表别名管理等进阶技巧,帮助开发者提升代码可读性和维护效率。

weixin_33737774的博客 445

SpringBoot与MyBatis-Plus-Join实战:高效联表查询指南

本文详细介绍了如何在SpringBoot项目中集成并使用MyBatis-Plus-Join框架,以简化复杂的联表查询操作。通过实战演示,展示了如何通过Lambda表达式风格的MPJLambdaWrapper高效构建多表关联查询、分页及结果映射,有效解决传统方式中的N+1查询和复杂SQL维护问题,显著提升开发效率与代码可读性。

weixin_29251337的博客 549

MyBatis级联查询深度解析:一对多关联实战指南

在实际企业级开发中,单表操作仅占20%的场景,而80%的业务需求涉及多表关联查询。本文将以一对多关系为例,深入剖析MyBatis级联查询的实现原理与最佳实践,助你掌握高效的数据关联处理技巧。

DD2187718660的博客 549
上一篇: Mybatis快速上手2 字段名和属性名不一致问题
下一篇: Mybatis快速上手4 关联表查询二:一对多表关联查询
执力
博客等级 码龄7年 3粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值