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

Mybatis @MapKey注解实现List转Map

文章目录

  • @MapKey介绍
  • @MapKey示例
    • - 传统的写法
    • - @MapKey的写法


@MapKey介绍

在MyBatis中,@MapKey 主要用于在映射查询结果到一个Map。

当你执行一个查询并期望返回一个Map时,你可以使用@MapKey来进行结果集的映射。而Mybatis内部会将查询到的结果映射为一个key-value的形式。

@MapKey示例

有这么一个场景,需要查询用户列表,并转为Map,map的key为用户ID。

User类:

@Data
@TableName("sys_user")
public class User implements Serializable {private static final long serialVersionUID = -6525322309638123441L;@PropIgnore@TableId(type = IdType.AUTO)private Integer userId;private String userName;private String password;private String salt;private String phone;private String sex;private String email;private String nickName;private String address;private Date createTime;private Date updateTime;
}

- 传统的写法

Controller:

    @ApiOperation(value="@MapKey获取用户列表",notes="@MapKey获取用户列表")@GetMapping("getUsers")public void getUsers() {List<User> userList = userMapper.getUsers();Map<Integer, User> userMap = userList.stream().collect(Collectors.toMap(User::getUserId, user -> user, (v1, v2) -> v1));}

Mapper:

List<User> getUsers();

Mapper.xml:

    <select id="getUsers" resultType="com.joker.pojo.User">select * from sys_user limit 100</select>

- @MapKey的写法

Controller:

    @ApiOperation(value="@MapKey获取用户列表",notes="@MapKey获取用户列表")@GetMapping("getUsers")public void getUsers() {Map<Integer, User> userMap = userMapper.getUserIdMapUsers();}

Mapper:

	@MapKey("userId")Map<Integer, User> getUserIdMapUsers();

注意:userId为User类的字段名称,而非数据库表的字段名称

Mapper.xml:

    <select id="getUserIdMapUsers" resultType="com.joker.pojo.User">select * from sys_user limit 100</select>

相关文章:

Mybatis @MapKey注解实现List转Map

文章目录 MapKey介绍MapKey示例- 传统的写法- MapKey的写法 MapKey介绍 在MyBatis中&#xff0c;MapKey 主要用于在映射查询结果到一个Map。 当你执行一个查询并期望返回一个Map时&#xff0c;你可以使用MapKey来进行结果集的映射。而Mybatis内部会将查询到的结果映射为一个k…...

vue中使用socket.io统计在线用户

目录 一、引入相关模块 二、store/modules 中封装socketio 三、后端代码(nodejs) 一、引入相关模块 main.js 中参考以下代码 ,另外socketio的使用在查阅其它相关文章时有出入,还是尽量以官方文档为准 import VueSocketIO from vue-socket.io import SocketIO from socket.io-…...

zotero中pdf-translate插件和其他插件的安装

1.工具–》插件 2.找插件 3.点击之后看到一堆插件 4.找到需要的&#xff0c;例如pdf-translate 5.点击进入&#xff0c;需要看一下md文档了解下&#xff0c;其实最重要的就是找到特有的(.xpi file) 6.点击刚刚的蓝色链接 7.下载并保存xpi文件 8.回到zotero&#xff0c;安装并使…...

【Linux操作系统】多线程控制(创建,等待,终止、分离)

目录 一、线程与轻量级进程的关系二、进程创建1.线程创建线程创建函数&#xff08;pthread&#xff09;查看和理解线程id主线程与其他线程之间的关系 三、线程等待&#xff08;回收&#xff09;四、线程退出线程退出情况线程退出方法 五、线程分离线程的优点线程的缺点 一、线程…...

二百七十八、ClickHouse——将本月第一天所在的那一周视为第一周,无论它是从周几开始的,查询某个日期是本月第几周

一、目的 ClickHouse指标表中有个字段week_of_month&#xff0c;含义是这条数据属于本月第几周。 而且将本月第一天所在的那一周视为第一周&#xff0c;无论它是从周几开始的。比如2024-12-01是周日&#xff0c;即12月第一周。而2024-12-02是周一&#xff0c;即12月第二周 二…...

JVM八股文精简

目录 简述JVM类加载过程简述JVM中的类加载器简述双亲委派机制双亲委派机制的优点简述JVM内存模型简述程序计数器简述虚拟机栈简述本地方法栈简述JVM中的堆简述方法区简述运行时常量池简述Java创建对象的过程简述JVM给对象分配内存的策略Java对象内存分配是如何保证线程安全的如…...

深入解析CMake中的find_package()命令:工作原理及实际应用示例

深入解析CMake中的find_package()命令&#xff1a;工作原理及实际应用示例 在CMake中&#xff0c;find_package() 是一个复杂而强大的命令&#xff0c;用于在构建系统中定位外部依赖&#xff08;通常是库&#xff09;&#xff0c;并配置必要的编译和链接设置。这个命令允许开发…...

使用数据层进行数据生命周期管理

作者&#xff1a;来自 Elastic Stef Nestor Elasticsearch 7.10 使配置数据生命周期变得不再那么复杂。在这篇博文中&#xff0c;我将介绍一些变化、如何使用它们以及一些最佳实践。 数据生命周期可以包含很多阶段&#xff0c;因此我们将涉及&#xff1a; 将集群划分为层&…...

Kubernetes架构原则和对象设计

云原生学习路线导航页&#xff08;持续更新中&#xff09; 快捷链接 Kubernetes常见问题解答 本文从 Google Borg系统的架构设计开始&#xff0c;深入讲解Kubernetes架构及组件的基本原理 1.什么是云计算 1.1.传统行业应用 假设有10台服务器&#xff0c;两个应用。小规模管…...

响应式编程一、Reactor核心

目录 一、前置知识1、Lambda表达式2、函数式接口 Function3、StreamAPI4、Reactive-Stream1&#xff09;几个实际的问题2&#xff09;Reactive-Stream是什么&#xff1f;3&#xff09;核心接口4&#xff09;处理器 Processor5&#xff09;总结 二、Reactor核心1、Reactor1&…...

uniapp+vue3+ts请求接口封装

1.安装luch-request yarn add luch-requestnpm install luch-request2.新建文件src/utils/request.ts 需要自己修改config.baseURL和token&#xff08;获取存储的token&#xff09; // import HttpRequest from luch-request; import type { HttpRequestConfig, HttpRespons…...

【计算机网络】实验4:生成树协议STP的功能以及虚拟局域网VLAN

实验 4&#xff1a;生成树协议STP的功能以及虚拟局域网VLAN 一、 实验目的 加深对生成树协议STP的功能的理解。 了解虚拟局域网VLAN。 二、 实验环境 • Cisco Packet Tracer 模拟器 三、 实验内容 1、验证交换机生成树协议STP的功能 (1) 第一步&#xff1a;构建网络拓…...

基于Matlab BP神经网络的电力负荷预测模型研究与实现

随着电力系统的复杂性和规模的不断增长&#xff0c;准确的电力负荷预测对于电网的稳定性和运行效率至关重要。传统的负荷预测方法依赖于历史数据和简单的统计模型&#xff0c;但这些方法在处理非线性和动态变化的负荷数据时&#xff0c;表现出较大的局限性。近年来&#xff0c;…...

java 21 多线程

1.相关概念 进程: 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存空间。当我们使用迅雷&#xff0c;又启动了一个进程&#xff0c;操作系统将为迅雷配新的内存空间。 进程是程序的一次执行过程&#…...

Rust学习笔记_07——枚举和范围

Rust学习笔记_04——引用 Rust学习笔记_05——控制流(1) Rust学习笔记_06——控制流(2) 文章目录 1. 枚举1.1基础1.2 给枚举变体起个“别名”1.3 枚举与匹配&#xff08;match&#xff09; 2. 范围2.1 介绍2.2 半开区间范围2.3 包含范围的语法糖2.4 步长范围&#xff08;Range …...

40分钟学 Go 语言高并发:服务性能调优实战

服务性能调优实战 一、性能优化实战概述 优化阶段主要内容关键指标重要程度瓶颈定位收集性能指标&#xff0c;确定瓶颈位置CPU、内存、延迟、吞吐量⭐⭐⭐⭐⭐代码优化优化算法、并发、内存使用代码执行时间、内存分配⭐⭐⭐⭐⭐系统调优调整系统参数、资源配置系统资源利用率…...

Windows通过指令查看已安装的驱动

Windows通过指令查看已安装的驱动 在 Windows 操作系统中&#xff0c;有几种命令可以用来查看已安装的驱动程序。以下是常见的几种方法&#xff1a; 1. 使用 pnputil 查看已安装驱动程序 pnputil 是一个 Windows 内置工具&#xff0c;可以列出所有已安装的驱动程序包。 命令…...

Windows 11 如何配置node.js

一&#xff0c;官网下载 官网首页 下载最新LTS版本&#xff0c;比较稳定&#xff0c;如果想探索更新的版本去探索新的nodejs功能。 1. 下载完成后&#xff0c;双击运行程序&#xff0c;点击next 2. 勾选接受协议&#xff0c;点击next 3. 选择自己的安装路径&#xff08;默认是…...

AWTK fscript 中的 串口 扩展函数

fscript 是 AWTK 内置的脚本引擎&#xff0c;开发者可以在 UI XML 文件中直接嵌入 fscript 脚本&#xff0c;提高开发效率。本文介绍一下 fscript 中的 ** 串口 扩展函数 ** 1.iostream_serial_create 创建串口输入输出流对象。 原型 iostream_serial_create(device) > ob…...

yolov11剪枝

思路&#xff1a;yolov11中的C3k2与yolov8的c2f的不同&#xff0c;所以与之前yolov8剪枝有稍许不同&#xff1b; 后续&#xff1a;会将剪枝流程写全&#xff0c;以及增加蒸馏、注意力、改loss&#xff1b; 注意&#xff1a; 1.在代码105行修改pruning.get_threshold(yolo.mo…...

大牛直播SDK(SmartMediaKit)Windows平台RTSP/RTMP直播播放SDK集成说明(C#版)

文档概述 本文介绍大牛直播SDK&#xff08;SmartMediaKit&#xff09;在 Windows 平台下 RTSP、RTMP 直播播放模块的集成方法&#xff0c;面向 Windows Forms、WPF 等 C# 客户端应用场景&#xff0c;重点说明 SDK 集成准备、播放器初始化、RTSP/RTMP 播放、播放参数配置、事件…...

ElastiFlow企业级网络流量监控解决方案:5大核心优势与架构深度解析

ElastiFlow企业级网络流量监控解决方案&#xff1a;5大核心优势与架构深度解析 【免费下载链接】elastiflow Network flow analytics (Netflow, sFlow and IPFIX) with the Elastic Stack 项目地址: https://gitcode.com/gh_mirrors/el/elastiflow 在数字化转型浪潮中&a…...

Notepad2-mod终极指南:掌握这款高效开源文本编辑器的深度开发与扩展

Notepad2-mod终极指南&#xff1a;掌握这款高效开源文本编辑器的深度开发与扩展 【免费下载链接】notepad2-mod LOOKING FOR DEVELOPERS - Notepad2-mod, a Notepad2 fork, a fast and light-weight Notepad-like text editor with syntax highlighting 项目地址: https://gi…...

C++的内存管理详细解释

一、C/C内存分布栈又叫堆栈&#xff0c;非静态局部变量/函数参数/返回值等等&#xff0c;栈是向下增长的。内存映射段是高效的I/O映射方式&#xff0c;用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存&#xff0c;做进程间通信。堆用于程序运行时动态内存分…...

中兴B863AV3.2-M刷机避坑指南:S905L3A芯片识别、固件选择与Amlogic USB Burning Tool 2.2.0配置详解

中兴B863AV3.2-M刷机全流程精解&#xff1a;从芯片识别到固件烧录的进阶实践 在智能电视盒的玩家圈子里&#xff0c;中兴B863AV3.2-M因其出色的硬件配置和可玩性备受关注。这款搭载Amlogic S905L3A芯片的设备&#xff0c;通过刷机可以解锁更多功能&#xff0c;但过程中暗藏的&q…...

从零搭建 Geo 开源项目源码开发环境——以 GeoServer 为例

在地理信息&#xff08;GIS&#xff09;与空间数据服务开发中&#xff0c;Geo 系开源项目&#xff08;如 GeoServer、GeoPandas、GeoDjango 等&#xff09;非常常见。很多团队后期都会走到“读源码 / 改源码 / 二次开发”这一步&#xff0c;而第一步往往是&#xff1a;把源码跑…...

影刀RPA跨境店群运营架构:TikTok Shop多节点高并发调度与Python环境隔离实战

大家好&#xff0c;我是林焱。 太有意思了&#xff0c;刚刷朋友圈&#xff0c;看到一个在跨境圈子里被疯狂转发的消息。 有几个当年和我一样&#xff0c;在南充念工程测量技术出身的 00 后学弟&#xff0c;最近跑回母校干了件特别硬核的事。 他们没有像传统的成功校友那样&a…...

使用Taotoken CLI工具一键为团队所有网站项目配置统一API接入点

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 使用Taotoken CLI工具一键为团队所有网站项目配置统一API接入点 在团队协作开发中&#xff0c;确保所有成员使用统一的大模型API接…...

Claude Code 架构深度解析:一文搞懂 Sub-Agent、Skill 与底层模型之间的协同机制

Claude Code 架构深度解析&#xff1a;一文搞懂 Sub-Agent、Skill 与底层模型之间的协同机制 Claude Code 凭什么成为 AI 编程工具市场占有率第一&#xff1f;本文深入拆解其内部四层架构——Skill 拦截层、Claude Code 编排器、Sub-Agent 执行层、底层大模型推理层——带你彻底…...

为什么你的ElevenLabs甘肃话输出像“普通话带口音”?5个声学特征参数调试错误导致92%失真率

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;甘肃话语音合成失真的现象学观察 甘肃话作为中原官话陇中片的代表性方言&#xff0c;其声调曲折性强、入声残留明显、连读变调规则复杂&#xff0c;为语音合成系统带来显著挑战。在部署基于Tacotron2WaveGlow的…...