当前位置: 首页 > news >正文

mybatis嵌套查询子集合只有一条数据

        我们再用mybatis做嵌套查询时,有时会遇到子集合只有1条数据的情况,例如下这样:

数据库查询结果

xml

    <resultMap id="userMap" type="com.springboot.demo.test.entity.User"><id column="uid" property="uid"/><result column="username" property="username"/><result column="tel" property="tel"/><result column="age" property="age"/><collection property="userRoleList" ofType="com.springboot.demo.test.entity.UserRole"><result column="roleid" property="roleid"/></collection></resultMap><select id="selectUser" resultMap="userMap">SELECTa.uid,a.username,a.tel,a.age,b.roleidFROMuser aLEFT JOIN user_role b ON a.uid = b.userid</select>

返回结果

[{"uid": 33,"username": "jon","tel": "123","age": 23,"userRoleList": [{"roleid": 1}]},{"uid": 31,"username": "xiaomi","tel": "110","age": 20,"userRoleList": [{"roleid": 13}]},{"uid": 35,"username": "WANG","tel": "222","age": 33,"userRoleList": [{"roleid": 1}]},{"uid": 34,"username": "xiaocai","tel": "111","age": 32,"userRoleList": [{"roleid": 1}]}
]

很明显,这不是我们期望结果。如果遇到这种情况,可以在子集合的映射里面把id放进去,这样mybatis就会避免上述的情况,如下

    <resultMap id="userMap" type="com.springboot.demo.test.entity.User"><id column="uid" property="uid"/><result column="username" property="username"/><result column="tel" property="tel"/><result column="age" property="age"/><collection property="userRoleList" ofType="com.springboot.demo.test.entity.UserRole"><id column="urid" property="urid"/><result column="roleid" property="roleid"/></collection></resultMap><select id="selectUser" resultMap="userMap">SELECTa.uid,a.username,a.tel,a.age,b.roleid,b.uridFROMuser aLEFT JOIN user_role b ON a.uid = b.userid</select>

结果

[{"uid": 33,"username": "jon","tel": "123","age": 23,"userRoleList": [{"urid": 47,"roleid": 9},{"urid": 48,"roleid": 1}]},{"uid": 31,"username": "xiaomi","tel": "110","age": 20,"userRoleList": [{"urid": 81,"roleid": 9},{"urid": 82,"roleid": 10},{"urid": 83,"roleid": 16},{"urid": 84,"roleid": 1},{"urid": 85,"roleid": 13}]},{"uid": 35,"username": "WANG","tel": "222","age": 33,"userRoleList": [{"urid": 86,"roleid": 11},{"urid": 87,"roleid": 1}]},{"uid": 34,"username": "xiaocai","tel": "111","age": 32,"userRoleList": [{"urid": 92,"roleid": 1}]}
]

相关文章:

mybatis嵌套查询子集合只有一条数据

我们再用mybatis做嵌套查询时&#xff0c;有时会遇到子集合只有1条数据的情况&#xff0c;例如下这样&#xff1a; 数据库查询结果 xml <resultMap id"userMap" type"com.springboot.demo.test.entity.User"><id column"uid" property…...

Github 生成SSH秘钥及相关问题

1.生成过程参考&#xff1a;Github 生成SSH秘钥&#xff08;详细教程&#xff09;_github生成密钥controller节点生成ssh秘钥-CSDN博客 2.遇到的问题&#xff1a;GitHub Connect: kex_exchange_identification: Connection closed by remote host 注意&#xff1a;如果.ssh文…...

STM32外设系列—MPU6050角度传感器

&#x1f380; 文章作者&#xff1a;二土电子 &#x1f338; 关注公众号获取更多资料&#xff01; &#x1f438; 期待大家一起学习交流&#xff01; 文章目录 一、MPU6050简介二、MPU6050寄存器简介2.1 PWR_MGMT_1寄存器2.2 GYRO_CONFIG寄存器2.3 ACCEL_CONFIG寄存器2.4 PW…...

网站小程序分类目录网源码系统+会员登录注册功能 带完整搭建教程

大家好啊&#xff0c;源码小编今天来给大家分享一款网站小程序分类目录网源码系统会员登录注册功能 。 以下是核心代码图模块&#xff1a; 系统特色功能一览&#xff1a; 分类目录&#xff1a;系统按照不同的类别对网站进行分类&#xff0c;方便用户查找自己需要的网站。用户可…...

【Linux网络】手把手实操Linux系统网络服务DHCP

目录 一、什么是dhcp 二、详解dhcp的工作原理 三、dhcp的实操 第一步&#xff1a;3台机器的防火墙和安全机制都需要关闭&#xff01;&#xff01;&#xff01; 第二步&#xff1a;Linux下载dhcp软件&#xff0c;并查看配置文件位置 第三步&#xff1a;读配置文件&#xf…...

Huggingface网页解析和下载爬虫

解析网页&#xff1a; import requests from bs4 import BeautifulSoup# 目标网页URL url https://huggingface.co/internlm/internlm-20b/tree/main# 发送GET请求 response requests.get(url)# 检查请求是否成功 if response.status_code 200:# 使用BeautifulSoup解析HTML…...

C# Winform 自定义带SWITCH的卡片

1、创建卡片用户控件 在控件库中添加用户控件&#xff08;Windows窗体&#xff09;&#xff0c;命名为Card&#xff1b; 在属性/布局栏设置Size为148,128. 2、修改Card.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; u…...

我用Devchat开发了公务员报名确认系统自动登录脚本,再也不用担心挤不进去了

#AI编程助手哪家好&#xff1f;DevChat“真”好用 # 演示效果 我用Devchat开发了公务员报名确认系统自动登录&#xff0c;再也不用担心挤不进去了 目录 演示效果前言粉丝独家专属红包码DevChat是什么&#xff1f;DevChat AI编程助手有哪些优势一、安装Vscode1、下载vscode链接…...

如何低门槛开发有趣实用的ZigBee产品?

一、什么是 Zigbee 协议&#xff1f; Zigbee 技术是一种连接距离短、功耗低、复杂程度低、数据传输量低的无线通信技术&#xff0c;其命名灵感源自于蜜蜂在群体中的信息传输。它主要通过网关与互联网进行通信&#xff0c;并嵌入各种智能设备&#xff0c;最终实现自动控制和远程…...

ChatGPT和API发生重大中断!

11月9日凌晨&#xff0c;OpenAI在官网发布&#xff0c;ChatGPT和API发生重大中断&#xff0c;导致全球所有用户无法正常使用&#xff0c;宕机时间超过2小时。 目前&#xff0c;OpenAI已经找到问题所在并进行了修复&#xff0c;但仍然不稳定&#xff0c;会继续进行安全监控。 …...

SQL第五次上机实验

1.向图书表&#xff08;Book&#xff09;插入以下记录 USE TSGL GO INSERT INTO Book VALUES(7-5402-1800-3,文学类,边城,沈从文,燕山出版社,10,5,5)2.向借阅表插入以下两条记录 USE TSGL GO INSERT INTO Lend VALUES(201207034201,7-5402-1800-3,00366240,2013-04-22),(2012…...

Matplotlib数据可视化综合应用Matplotlib图形配置在线闯关_头歌实践教学平台

Matplotlib数据可视化综合应用图形配置 第1关 配置颜色条第2关 设置注释第3关 自定义坐标刻度第4关 配置文件与样式表 第1关 配置颜色条 任务描述 本关任务&#xff1a;使用colorbar绘制一个热成像图。 编程要求 在右侧编辑器Begin-End处补充代码&#xff0c;根据输入数据绘制…...

CSS实现瀑布流的两种方式

column 多行布局实现瀑布流 1.column 实现瀑布流主要依赖两个属性。 2.column-count 属性&#xff0c;是控制屏幕分为多少列。 3.column-gap 属性&#xff0c;是控制列与列之间的距离。 <!DOCTYPE html> <html lang"en"> <head><meta charset&q…...

Hadoop 视频分析系统

视频分析系统 业务流程 原始数据 vedio.json {"rank":1,"title":"《逃出大英博物馆》第二集","dzl":"77.8","bfl":"523.9","zfl":"39000","type":"影视",&quo…...

Flutter android和ios闪屏页配置

一.概念理解 闪屏页 1.当点击app开始的一瞬间&#xff0c;所呈现出来的页面就是闪屏页。 2.为什么会有闪屏也&#xff0c;由于app启动需要加载代码&#xff0c;这个过程需要耗时&#xff0c;在没有加载完成之前&#xff0c;是看不到app真正的页面。所以app在没有完全加载完时…...

30道高频Vue面试题快问快答

※其他的快问快答&#xff0c;看这里&#xff01; 10道高频Qiankun微前端面试题快问快答 10道高频webpack面试题快问快答 20道高频CSS面试题快问快答 20道高频JavaScript面试题快问快答 30道高频Vue面试题快问快答 面试中的快问快答 快问快答的情景在面试中非常常见。 在面试过…...

vue-前端实现模糊查询

vue-前端实现模糊查询 开始觉得前端的模糊查询肯定是非常难实现的&#xff0c;但后来发现还是很容易的&#xff0c;几行代码就可以搞定。 原理 从后端获取到所有数据后&#xff0c;将数据存储于两个变量中&#xff0c;目的是为了其中一个作为模糊查询的对照组&#xff0c;用…...

QT:tcpSocket 报错The proxy type is invalid for this operation

调用connectToHost时会先检查代理情况。Qt 程序默认使用系统的代理设置会导致这个问题导致&#xff0c;只要关闭系统的代理设置就可以解决这个问题&#xff1a; &#xff08;1&#xff09;添加头文件&#xff1a; #include <QNetworkProxy> &#xff08;2&#xff09;添加…...

PostgreSQL 技术内幕(十一)位图扫描

扫描算子在上层计算和底层存储之间&#xff0c;向下扫描底层存储的数据&#xff0c;向上作为计算的输入源&#xff0c;在SQL的执行层中&#xff0c;起着关键的作用。顺序、索引、位图等不同类型的扫描算子适配不同的数据分布场景。然而&#xff0c;扫描算子背后的实现原理是怎样…...

C# WebSocket 服务器

*******************websocket服务器************************************** 第一步&#xff1a;创建HttpListener类&#xff0c;并启动监听&#xff1a; var listener new HttpListener(); listener.Prefixes.Add("http://10.10.13.140:8080/"); …...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...