4.一对一查询和一对多查询

MyBatis中实现多表查询方式(一对一、一对多) 实现方式简单概括 一对一、一对多指的是什么? 以学生为主体,面对班级这个对象,就是一对一;即,一个学生对应一个班级; 以班级为主体,面向学生这个对象,就是一对多;即,一个班级对应多个学生。 一对一:一张身份证对应一个人、一门课程对应一个老师。 一对多:一个老师对于多个学生、一个人对应多张电话卡。 事前准备:两张表(student表)、(class表) MyBatis多表查询正式起飞! 一、一对一查询(sqlMapper配置文件) private Integer s... 阅读详情

1.一对一查询

property代表pojo中的属性名
column代表查询出来的列名

User.java
在这里插入图片描述
UserRole.java
在这里插入图片描述

UserDao.java

//一对一
public List<User> getAllUsers3();

UserMapper.xml

	 <!-- 一对一查询关联映射(常用) -->
	 <resultMap type="User" id="userMap2">
	 	<id property="id" column="id"/>
	 	<result property="userCode" column="userCode"/>
	 	<result property="userName" column="userName"/>
	 	<!-- 应用UserRole的映射 -->
	 	<association property="userRole2" javaType="UserRole" resultMap="userRoleMap"></association>
	 </resultMap> 
	 <resultMap type="UserRole" id="userRoleMap">
	 	<id property="id" column="roleId"/>
	 	<result property="roleCode" column="roleCode"/>
	 	<result property="roleName" column="roleName"/>
	 </resultMap>
	 <select id="getAllUsers3" resultMap="userMap2">
	 	select u.id,userCode,userName,userPassword,
	 			r.id as roleId,roleCode,roleName
	 	from smbms_user u
	 	inner join smbms_role r on u.userRole=r.id
	 </select>

UserService.java

	//一对一
	public List<User> getAllUsers3(){
		SqlSession session = MyBatisUtil.getSqlSession();
		List<User> lists = session.getMapper(UserDao.class).getAllUsers3();
		MyBatisUtil.closeSqlSession(session);
		return lists;
	}

测试类

	//一对一
	public void getAllusers3() {
		List<User> lists = us.getAllUsers3();
		for (User user : lists) {
			//user.getUserRole2().getRoleCode()   先获取role对象,再获取其中的属性
			System.out.println(user.getId()+"\t"+user.getUserName()+"\t"+user.getUserRole2().getRoleCode()+
					"\t"+user.getUserRole2().getRoleName());
		}
	}

2.一对多查询

UserDao.java

	//一对多
	public User getAllUsers4(int uid);

UserMapper.xml

	 <resultMap type="User" id="userMap3">
	 	<id property="id" column="uid"/>
	 	<result property="userName" column="userName"/>
	 	<result property="userCode" column="userCode"/>
	 	<!-- 多个地址映射 -->
	 	<collection property="addresses" ofType="Address"
	 	 resultMap="addressMap"></collection>
	 </resultMap>
	  <!-- 一对多查询关联映射(常用) Address-->
	 <resultMap type="Address" id="addressMap">
	 	<id property="id" column="aid"/>
	 	<result property="addressDesc" column="addressDesc"/>
	 	<result property="contact" column="contact"/>
	 </resultMap>
	 
	 <select id="getAllUsers4" parameterType="int" resultMap="userMap3">
	 	select u.id as uid,userName,userCode,a.contact,a.addressDesc
	 	from smbms_user u
	 	left join smbms_address a on a.userId=u.id
	 	where u.id=#{uid}
	 </select>

UserService.java

	//一对多
	public User getAllUsers4(int uid){
		SqlSession session = MyBatisUtil.getSqlSession();
		User user = session.getMapper(UserDao.class).getAllUsers4(uid);
		MyBatisUtil.closeSqlSession(session);
		return user;
	}

测试类

	//一对多
	public void showAllUsers4() {
		User user = us.getAllUsers4(1);
		for (Address ad : user.getAddresses()) {
			System.out.println(user.getUserCode()+"\t"+user.getUserName()+
					ad.getContact()+"\t"+ad.getAddressDesc());
		}
	}
Mybatis系列第7篇:各种查询详解 id int AUTO_INCREMENT PRIMARY KEY COMMENT ‘订单明细id’,order_id INT NOT NULL DEFAULT 0 COMMENT ‘订单id,来源于t_order.id’,goods_id INT NOT NULL DEFAULT 0 COMMENT ‘商品id,来源于t_goods.id’,num INT NOT NULL DEFAULT 0 COMMENT ‘商品数量’, 阅读详情

相关推荐

Keysight ADS新手必看:3分钟搞定TDR模拟的保姆级教程(附差分信号设置技巧)

本文为Keysight ADS新手提供TDR模拟的保姆级教程,详细介绍了从基础环境准备到差分信号设置的全流程。通过内置模板调用、待测器件连接和仿真结果解读,帮助用户快速掌握TDR模拟技术,特别包含差分信号配置技巧,提升信号完整性分析效率。

weixin_30872157的博客 197

MyBatis映射(一对一查询)

问题:根据用户Id查询Person的信息,包括IdCard的信息,用户和IdCard是一对一的关系。(此处我用的是idcard)1.5.1.6 测试结果。

m0_64400783的博客 886

DDR Study - LPDDR5 Power-Up and Initialization Sequence

本文深入解析LPDDR5内存的上电初始化流程,涵盖电源斜坡、复位信号释放和初始化训练等关键阶段。通过实际案例分享,详细探讨了电源轨时序、RESET信号处理、ZQ校准和CA总线训练等核心技术要点,帮助硬件工程师规避常见设计陷阱,确保DDR内存稳定运行。

weixin_42523792的博客 304

JavaEE简单实例——MyBatis的一对一映射的嵌套查询的简单介绍和基础配置

JavaEE简单实例——MyBatis的一对一映射关系中的嵌套查询的简单介绍和基础配置

hssjsh的博客 2555

避坑指南:处理A股通达信分时数据转日K线时,你可能会遇到的3个时间戳问题

本文针对量化交易中处理A股通达信分时数据转日K线时的常见时间戳问题,提供了专业解决方案。重点解析了午休时段处理、Pandas重采样参数设置及CSV读取时的日期解析陷阱,帮助开发者避免数据预处理错误,提升策略回测准确性。适用于Python量化交易开发者。

weixin_42549496的博客 289

用户行为数据分析 User Behavior Data from Taobao for Recommendation

一、提出问题 二、理解数据 数据来源 阿里云天池数据集:(https://tianchi.aliyun.com/dataset/dataDetail?dataId=649) 本文选取的数据集为UserBehavior.csv,共有5242880条数据。数据的具体类别如下表所示: 用户行为种类有四种,如下表所示 对于数据维度的说明如下: 在本文选取的2017年11月25日到2017年12月3日的时间范围内,不重复的用户数量为10202,不重复的商品ID数为412369,不重复的商品类目ID数为5859,

cccxxxqq的博客 5206

MyBatis关联查询之一对一查询

关联查询一对一查询是最基础的关联查询知识,何谓一对一。比如本文要讲到的例子,学生去图书馆借书的例子,有一个表叫做tb_user表示学生的信息,另一个表表示tb_book,那么假定每个人只能借一本书,那么两个表之间的关系就是一对一的,即一本书只能借给一个人,一个人只能借一本书。所以相对来说,一对一的关联查询,逻辑比较清晰,容易理解。我们接下来通过两种方法进行讲解一对一的关联查询。 1.示例简介

carson0408的博客 545

线性回归做糖尿病分析(diabetes数据集),并分析单个特征值与病情的关系

1.diabetes数据集 共442个样本,每个样本有十个特征,分别是 [‘age’, ‘sex’, ‘bmi’, ‘bp’, ‘s1’, ‘s2’, ‘s3’, ‘s4’, ‘s5’, ‘s6’],对应年龄、性别、体质指数、平均血压、S1~S6一年后疾病级数指标。 Targets为一年后患疾病的定量指标,值在25到346之间。 ...

t18438605018的博客 1万+

MySQL 数据库关联查询全解析:一对一、一对多、多对多

在数据库的世界里,数据之间的关系错综复杂,而关联查询就像是连接这些数据的桥梁,帮助我们从多个表中获取所需的信息。今天,就带大家深入探索 MySQL 数据库中的关联查询,包括一对一、一对多和多对多这三种常见的关系类型,通过实际代码和案例,让大家轻松掌握。一对一关系通常出现在两个表中,一个表的一条记录只能对应另一个表中的一条记录。例如,一个用户表(user)和一个用户详细信息表(user_detail),每个用户对应一条详细信息记录。一对多关系是指一个表中的一条记录可以对应另一个表中的多条记录。

m0_72686196的博客 3117

基于深度学习的电力系统暂态稳定评估与预防控制复现

本文复现了基于深度学习的电力系统暂态稳定评估与预防控制方法。主要内容包括:(1)数据预处理环节,对IEEE 39节点系统的电压幅值、相角等特征数据进行归一化处理;(2)ACNGAT模型实现,该模型结合时间卷积网络(TCN)和图注意力网络(GAT)提取时空特征;(3)采用改进的帝企鹅优化算法进行预防控制。关键技术点包括:融合时空信息的特征提取、改进的邻接矩阵构建方法(λ_ij = E_i * E_j * B_ij)以及时空注意力机制。代码实现采用Python和PyTorch框架。

huanghm88的专栏 336

25、量子计算:中性原子与约瑟夫森结量子比特

本文详细探讨了中性原子和约瑟夫森结两种量子比特在量子计算中的应用。中性原子量子比特利用光晶格实现量子态的操控,具有长相干时间的优势,但面临可扩展性和多量子比特操作的挑战;而约瑟夫森结量子比特基于超导技术,结合半导体制造工艺,具有低耗散和潜在的高可扩展性,但在参数控制和环境干扰方面存在难题。文章还比较了这两种方案的性能、应用场景及未来发展趋势,展望了它们在量子计算发展中的潜力与突破方向。

ol789012的博客 212

Springboot——Mybatis实现一对一、一对多查询

文章目录前言环境项目搭建依赖引入配置文件编写一对一测试(association )测试1null问题解决一对多测试(collection)总结代码参考 前言 写这篇博客之前呢,查看了下已经写过的博客,感觉针对于Mybatis的使用都太过简单。总觉得少了点什么,于是决定补充一下Mybatis中关联查询时,ResultMap配置写一对一、一对多的使用案例。 环境 本次测试采取Springboot 2.1.4.RELEASE结合mybatis 1.3.0进行测试。 项目搭建 依赖引入 主要引入Springboot

专注写bug 1981

FT2004(D2000)开发实战之网口stmmac报错调试(Failed to reset the dma)

网口stmmac报错调试(Failed to reset the dma)

嵌入式Linux 3584

MyBatis-Plus-Join 注解映射

EntityMapping和@FieldMapping两个注解早在1.2.0版本就已经发布, 1.4.5对这两个注解进行了小升级。

weixin_36873225的博客 1016

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

hibernate 一对多_MyBatis学习:高级映射之一对一查询

关注不迷路为了模拟这些需求,事先要建立几个表,不同的表之间将对应上面提到的不同的映射,为此,我建立4个表,如下:每个表对应的po就不写了。从上面的表中,可以分析出下面的一些关系:今天主要总结mybatis中一对一的映射,所以我选择左边orders和user之间的一对一关系来总结,主要是查询订单信息,关联查询创建订单的用户信息。我们知道,查询结果可以使用resultType,也可以使用resultM...

weixin_39725885的博客 91

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

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

Mybatis的多表关联查询mybatis中的多表查询数据库准备项目目录一对一查询(多对一)方式一(通过Accunt的子类方式查询--不常用)定义账户信息的实体类编写 Sql 语句定义 AccountUser 类定义账户的持久层 Dao 接口定义 IAccountDao.xml 文件中的查询配置信息测试代码方式二(建立实体类关系的方式--常用)修改 Account 类修改 AccountDao 接口中的方法重新定义 IAccountDao.xml 文件测试代码一对多查询编写User实体类编写 SQL 语句用

『愚』的博客 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

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

数据库表与表之间的关系: 1、一对一查询 需求:查询所有订单信息,关联查询下单用户信息。 注意:因为一个订单信息只会是一个人下的订单,所以从查询订单信息出发关联查询用户信息为一对一查询。如果从用户信息出发查询用户下的订单信息则为一对多查询,因为一个用户可以下多个订单。 sql语句: SELECT o.id, o.user_id userId, o.number, o.cre...

夏沐的博客 1万+

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

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

m0_67942533的博客 1万+

Mybatis实现多表查询(一对一、一对多、多对多)

一、一对一查询 1.1 模型 用户表和订单表的关系为,一个用户有多个订单,一个订单只从属于一个用户 一对一查询的需求:查询一个订单,与此同时查询出该订单所属的用户 1.2 SQL语句 对应的sql语句:select * from orders o,user u where o.uid=u.id 查询结果如下: 1.3 创建Order和User实体类 Order.java public class Order { private int id; private Date orde

小洋人最happy的专栏 3万+

[MySql]实现多表查询-一对一,一对多

目录多表关联关系的分类mybatis中的多表查询:数据库准备 项目目录 一对一查询(多对一)方式一:(xml文件映射)查询结果: 方式二:(注解映射) 一对多查询(一对多)方式一:(xml文件映射) 方式二:(注解映射)既然数据库是存储项目中的数据的,项目中的数据主要是类型创建的对象,项目中类型和类型之间是有关系的,数据库中怎么体现出来? 不论是生活中,还是抽象出来的软件中,描述生活中的多个类型之间的关系,总结如下:举例:学生和成绩就是一对多 成绩和学生就是一对一 一个学生可以有多个成绩 多个成绩属于同一个

Ran小Ran的博客 1万+

MyBatis实现一对一,一对多关联查询

MyBatis如何实现一对一,一对多查询的? 可以通过关联查询实现。关联查询是几个表联合查询,只查询一次,通过在resultMap里面的association,collection节点配置一对一,一对多的类就可以完成 具体实现如下 准备数据库表结构与数据 班级classes与老师teacher是一对一的关系 班级classes与学生student是一对多的关系 SET NAMES utf8mb4...

ThinkWon的博客 2万+

MyBatis如何实现多表查询(一对一、一对多)

MyBatis如何实现多表查询(一对一、一对多)

weixin_68286174的博客 8911

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

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

臭小子的博客 3万+

Mybatis一对一、一对多、多对多

在Mybatis中如何使用一对一、一对多、多对多的方式来查询数据

冬眠猫的博客 9115
上一篇: 3.mybatis下的查询
下一篇: 10.Web编程中的技能点
cuichen97
博客等级 码龄7年 34粉丝 209原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值