使用 @Results 注解来手动指定字段映射
在 MyBatis 中,@Results 注解用于手动指定查询结果的字段映射,尤其当数据库列名与 Java 对象的字段名不一致时。你可以通过 @Results 和 @Result 注解来精确控制每一列与类属性之间的映射关系。
示例:使用 @Results 注解来手动指定字段映射
假设你有一个 AiTeachingPlanItems 类,它与数据库表 t_ai_teaching_plan_items 对应。这个类的字段与数据库列名不完全一致,或者你想更清晰地控制映射关系时,可以使用 @Results 注解。
1. 假设的 Java 类(AiTeachingPlanItems):
public class AiTeachingPlanItems {
private Long id; // 对应数据库的 `id` 字段
private String name; // 对应数据库的 `name` 字段
private String description; // 对应数据库的 `description` 字段
private Integer sort; // 对应数据库的 `sort` 字段
// getters and setters
}
2. 使用 @Results 注解进行字段映射:
假设 t_ai_teaching_plan_items 表的列名是 AI_ID, AI_NAME, AI_DESCRIPTION, AI_SORT,并且这些列名与你的 Java 类的属性名不完全一致。你可以通过 @Results 注解来显式指定映射关系。
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Result;
public interface AiTeachingPlanItemsMapper {
@Select("SELECT AI_ID, AI_NAME, AI_DESCRIPTION, AI_SORT FROM t_ai_teaching_plan_items WHERE AI_TEACHING_PLAN_THEME = #{aiTeachingPlanTheme} ORDER BY AI_SORT")
@Results({
@Result(property = "id", column = "AI_ID"),
@Result(property = "name", column = "AI_NAME"),
@Result(property = "description", column = "AI_DESCRIPTION"),
@Result(property = "sort", column = "AI_SORT")
})
List<AiTeachingPlanItems> getAiTeachingPlanItemsByTheme(String aiTeachingPlanTheme);
}
3. 解析代码:
1.@Select:指定 SQL 查询语句。
2.在此例中,SQL 查询从 t_ai_teaching_plan_items 表中选择了四个字段,并根据 AI_TEACHING_PLAN_THEME 进行筛选。
3.@Results:用于指定查询结果与 Java 对象字段之间的映射关系。
4.@Result(property = "id", column = "AI_ID"):这表示查询结果中的 AI_ID 列应该映射到 AiTeachingPlanItems 对象的 id 属性。
5.@Result(property = "name", column = "AI_NAME"):查询结果中的 AI_NAME 列映射到 name 属性,以此类推。
6.List<AiTeachingPlanItems>:方法返回的是一个 AiTeachingPlanItems 对象的列表。
4. 使用 @Results 的场景:
7.字段命名不一致:如果数据库中的列名与 Java 类的属性名不一致,使用 @Results 可以手动指定每列与对象属性之间的映射关系。
8.复杂映射:当查询涉及多个表连接(例如,联接查询)时,@Results 可以帮助你将多个表的列映射到不同的对象属性。
5. 小结:
9.@Results 是 MyBatis 提供的用于控制查询结果与 Java 对象之间映射的注解。
10.@Result 用来指定具体的字段映射规则,适用于字段命名不一致或者需要手动设置映射关系的场景。
相关文章:
使用 @Results 注解来手动指定字段映射
在 MyBatis 中,Results 注解用于手动指定查询结果的字段映射,尤其当数据库列名与 Java 对象的字段名不一致时。你可以通过 Results 和 Result 注解来精确控制每一列与类属性之间的映射关系。 示例:使用 Results 注解来手动指定字段映射 假设你…...
数据治理中 大数据处理一般都遵循哪些原则
在数据治理中,大数据处理通常遵循以下原则: 最小化原则:企业应只收集实现特定目的所需的数据,避免数据冗余和安全风险。 合法性原则:企业必须遵守相关法律法规,确保数据处理符合法律要求,降低法…...
从0到1:STM32温控系统开发踩坑指南
1. 设计目标 核心功能:实现0-100℃范围内的温度闭环控制 性能指标: 测量精度:0.5℃(使用DS18B20传感器) 控制响应时间:<5秒 显示分辨率:0.1℃ 扩展功能: LCD实时显示当前温度…...
修改时无条件,可以自定义id条件(通过查询)
在这段代码中,$(row).attr(data-rarity, data.rarity); 的作用是给表格的每一行 (row) 添加一个 data-rarity 的自定义属性,属性的值是该行数据中的 rarity 字段。 解释: 1.row 是当前行的 DOM 元素。 2.data.rarity 是从 data 对象中获取的…...
工业制造能耗管理新突破,漫途MTIC-ECM平台助力企业绿色转型!
在工业制造领域,能源消耗一直是企业运营成本的重要组成部分。随着“双碳”目标的推进,如何实现高效能耗管理,成为制造企业亟待解决的问题。漫途MTIC-ECM能源能耗在线监测平台,结合其自研的硬件产品,为工业制造企业提供…...
实现一个简单的协同过滤推荐算法
题目描述: 协同过滤是推荐系统中的一种常用技术,其基本思想是利用用户之间的相似性或物品之间的相似性来进行推荐。本次面试题要求实现一个基于用户的协同过滤推荐算法。 具体要求: 定义两个类:User 和 Item,分别表示用…...
eNSP防火墙综合实验
一、实验拓扑 二、ip和安全区域配置 1、防火墙ip和安全区域配置 新建两个安全区域 ip配置 Client1 Client2 电信DNS 百度web-1 联通DNS 百度web-2 R2 R1 三、DNS透明代理相关配置 1、导入运营商地址库 2、新建链路接口 3、配置真实DNS服务器 4、创建虚拟DNS服务器 5、配置D…...
操作系统知识(二)
1、线程切换进行了哪些动作 在操作系统中,线程切换(也称为上下文切换)是指操作系统将 CPU 的控制权从一个线程转移到另一个线程的过程。这个过程涉及多个步骤和动作,主要包括以下几个方面: 1. 保存当前线程的上下文 …...
图论:tarjan 算法求解强连通分量
题目描述 有一个 n n n 个点, m m m 条边的有向图,请求出这个图点数大于 1 1 1 的强连通分量个数。 输入格式 第一行为两个整数 n n n 和 m m m。 第二行至 m 1 m1 m1 行,每一行有两个整数 a a a 和 b b b,表示有一条…...
Spring中Bean的四种实例化方法
Bean的四种实例化方法 Bean是Spring核心的概念,另外一个核心的概念是AOP。官网上,Bean的解释是: In Spring, the objects that form the backbone of your application and that are managed by the Spring IoC container are called beans…...
专利申请要求
专利申请并不要求发明已经实际制造出来,但需要具备完整且可行的技术方案。以下是详细的解释和申请流程: 一、专利申请的核心要求 技术方案而非实物 专利保护的是创新性的技术方案或设计理念,而非实物产品本身。只要你能清晰描述技术原理、结构…...
解锁 JavaScript 异步编程:Promise 链式操作、async/await 与 Promise.all 深度剖析
1.引言 在 JavaScript 的世界里,异步编程是一个核心且关键的概念。随着 Web 应用的复杂度不断提升,处理多个异步操作的需求也日益增长。传统的回调函数方式容易陷入 “回调地狱”,让代码的可读性和可维护性大打折扣。而 Promise 的出现为异步编程带来了新的曙光,后续又衍生…...
Centos虚拟机扩展磁盘空间
Centos虚拟机扩展磁盘空间 扩展前后效果1 虚拟机vmware关机后,编辑2 扩展2.1 查看2.2 新建分区2.3 格式化新建分区ext42.3.1 格式化2.3.2 创建2.3.3 修改2.3.4 查看 2.4 扩容2.4.1 扩容2.4.1 查看 扩展前后效果 df -h1 虚拟机vmware关机后,编辑 2 扩展 …...
记录一次部署PC端网址全过程
当我查看我之前写的文章时、顿时惊奇发出感慨:啥时候写的?是我写的么?疑惑重重… 所以说,好记性不如烂笔头。 记录一次部署PC端网址全过程 部署PC端网址分是三步:第一步:申请域名并映射到外网IP ࿰…...
利用 OpenCV 进行棋盘检测与透视变换
利用 OpenCV 进行棋盘检测与透视变换 1. 引言 在计算机视觉领域,棋盘检测与透视变换是一个常见的任务,广泛应用于 摄像机标定、文档扫描、增强现实(AR) 等场景。本篇文章将详细介绍如何使用 OpenCV 进行 棋盘检测,并…...
Java Spring boot 篇:常用注解
Configuration 作用 Configuration 注解的核心作用是把一个类标记为 Spring 应用上下文里的配置类。配置类就像一个 Java 版的 XML 配置文件,能够在其中定义 Bean 定义和 Bean 之间的依赖关系。当 Spring 容器启动时,会扫描这些配置类,解析其…...
#渗透测试#批量漏洞挖掘#Apache Log4j反序列化命令执行漏洞
免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章读。 目录 Apache Log4j反序列化命令执行漏洞 一、…...
【Linux】Linux 文件系统——关于inode 不足的相关案例
ℹ️大家好,我是练小杰,今天周二了,明天星期三,还有三天就是星期五了,坚持住啊各位!!!😆 本文是对之前Linux文件权限中的inode号进行实例讨论,看到博客有错误…...
k8s集群如何赋权普通用户仅管理指定命名空间资源
文章目录 1. 普通用户2. 创建私钥3. 创建 CertificateSigningRequest4. 批准 CertificateSigningRequest5. 创建 kubeconfig6. 创建角色和角色绑定7. 测试 1. 普通用户 创建用户demo useradd demo2. 创建私钥 下面的脚本展示了如何生成 PKI 私钥和 CSR。 设置 CSR 的 CN 和 …...
工控网络安全介绍 工控网络安全知识题目
31.PDR模型与访问控制的主要区别(A) A、PDR把对象看作一个整体 B、PDR作为系统保护的第一道防线 C、PDR采用定性评估与定量评估相结合 D、PDR的关键因素是人 32.信息安全中PDR模型的关键因素是(A) A、人 B、技术 C、模型 D、客体 33.计算机网络最早出现在哪个年代(B) A、20世…...
Windows/Mac/Linux全平台指南:用dump1090和Virtual Radar Server打造你的跨系统航班信息监控面板
跨平台航班监控系统实战:从SDR信号到可视化仪表盘的全链路搭建 清晨六点,当第一缕阳光穿透云层时,全球已有数万架航班在天空中穿梭。这些钢铁巨鸟不断广播着自己的位置、高度和速度——这就是ADS-B信号的魔力。不同于依赖传统雷达的空中交通…...
如何在Kodi中安装配置115网盘插件:新手的完整云端观影教程 [特殊字符]
如何在Kodi中安装配置115网盘插件:新手的完整云端观影教程 🚀 【免费下载链接】115proxy-for-kodi 115原码播放服务Kodi插件 项目地址: https://gitcode.com/gh_mirrors/11/115proxy-for-kodi 还在为本地存储空间不足而烦恼吗?想要在K…...
别再只盯着算法了!手把手教你用ROS和Gazebo搭建第一个激光SLAM仿真环境(Ubuntu 20.04)
激光SLAM实战:从仿真环境搭建到算法验证全流程指南 在机器人导航领域,激光SLAM技术已经从实验室走向工业应用,成为自动驾驶、服务机器人等场景的核心组件。但许多初学者常陷入一个误区——过度关注算法理论而忽视工程实践。本文将打破这一惯性…...
DRIFT技术:动态微调提升多模态大模型推理性能
1. 项目概述 DRIFT(Dynamic Refinement through Injected Fine-Tuning)是一种针对多模态大模型的轻量级优化技术,通过在推理阶段动态注入梯度信号,显著提升模型在复杂任务中的表现。这项技术特别适合处理需要跨模态对齐的视觉-语言…...
Stable Diffusion文生图实战:从CLIP编码到VAE解码,一步步拆解txt2img的完整流程
Stable Diffusion文生图核心技术解析:从文本编码到图像生成的完整实现路径 在当今AI生成内容(AIGC)领域,Stable Diffusion已成为最受开发者关注的文本到图像生成模型之一。本文将深入剖析其核心架构与实现细节,通过代码…...
终极GCP CLI实战指南:从GitHub到云端的一键部署
终极GCP CLI实战指南:从GitHub到云端的一键部署 【免费下载链接】dockerfiles Various Dockerfiles I use on the desktop and on servers. 项目地址: https://gitcode.com/gh_mirrors/do/dockerfiles GCP CLI(Google Cloud Platform命令行工具&a…...
如何在5分钟内为Unity游戏添加自动翻译:XUnity.AutoTranslator完整指南
如何在5分钟内为Unity游戏添加自动翻译:XUnity.AutoTranslator完整指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾经因为语言障碍而错过了精彩的Unity游戏?面对日文、…...
工业计算机在机床上下料机器人中的应用与产品解决方案
上周二刚从佛山顺德一个五金加工厂回来,老板拉着我吐槽,说他那 6 台机床上下料机器人,三天两头出问题。不是主控死机卡料,就是响应慢了撞机床,一个月停机损失快十万了。干了 17 年工控,这种事我真的见得太多…...
边缘AI服务器reServer Jetson-50-1-H4深度解析
1. 边缘AI服务器新选择:reServer Jetson-50-1-H4深度解析在AI应用逐渐从云端向边缘端迁移的今天,一款性能强劲且易于部署的边缘AI服务器成为许多开发者的刚需。Seeed Studio最新推出的reServer Jetson-50-1-H4就是这样一款产品,它基于NVIDIA …...
Vinix音频子系统解析:HDA驱动与OSS兼容层的实现原理
Vinix音频子系统解析:HDA驱动与OSS兼容层的实现原理 【免费下载链接】vinix Vinix is an effort to write a modern, fast, and useful operating system in the V programming language 项目地址: https://gitcode.com/gh_mirrors/vi/vinix Vinix是一个用V语…...
