MybatisPlus中@EnumValue注解介绍、应用场景和示例代码

news/2024/10/4 19:55:03/文章来源:https://blog.csdn.net/a_beiyo/article/details/141676266

@EnumValue注解详细介绍

  1. 功能概述

    • @EnumValue注解标记在枚举类型的字段上,表示该字段是枚举值在数据库中存储的实际值。这对于枚举的持久化是关键,确保枚举在数据库中的表示与Java枚举类的一致性。
  2. 主要用途

    • 字段指定:指定枚举类中哪个字段将用于数据库存储。例如,如果一个枚举包含多个字段(如代码和描述),你可以使用@EnumValue指定哪个字段代表实际的存储值。
    • 数据转换:帮助MybatisPlus自动处理枚举与数据库存储值之间的转换,简化持久化逻辑。
  3. 应用场景

    • 当数据库中的某个字段需要存储枚举类型的值(如状态码、类型标识符)时,使用@EnumValue来明确该字段。
    • 使枚举值与数据库中的实际存储值相对应,有助于代码的清晰和一致性。
  4. 示例代码及其解读

import com.baomidou.mybatisplus.annotation.EnumValue;public enum Status {@EnumValueACTIVE(1, "Active"),INACTIVE(0, "Inactive");private final int code;private final String description;Status(int code, String description) {this.code = code;this.description = description;}public int getCode() {return code;}public String getDescription() {return description;}public static Status fromCode(int code) {for (Status status : values()) {if (status.code == code) {return status;}}throw new IllegalArgumentException("Unknown code: " + code);}
}
  1. 详细解释

    • 字段声明code字段上使用了@EnumValue注解,指示该字段是用于数据库存储的实际值。
    • 构造函数:枚举的构造函数接收codedescription,分别用于数据库存储值和描述。
    • fromCode方法:根据存储的code值查找对应的枚举实例,简化从数据库值到枚举对象的转换。
  2. MybatisPlus配置

    • MybatisPlus会在映射时自动识别@EnumValue注解,并将枚举的存储字段用于数据库操作,而不是枚举名称。

配置实体类

假设我们有一个名为 User 的实体类,其中一个字段使用了 Status 枚举类型。

实体类示例
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;@Data
@TableName("user") // 指定数据库表名
public class User extends Model<User> {@TableId // 指定主键字段private Long id;@TableField("username")private String username;@TableField("status")private Status status; // 使用枚举类型字段// 其他字段和方法...
}
配置说明
  1. @TableName

    • 用于指定数据库中的表名。这个注解是可选的,如果实体类名与表名相同,可以省略。
  2. @TableId

    • 标记主键字段。可以指定主键策略(如自增、UUID等),但这在使用 @EnumValue 时并不直接相关。
  3. @TableField

    • 用于指定数据库表中的字段名。默认情况下,字段名与数据库列名相同,但你可以通过这个注解来显式指定。
  4. Status status

    • 这是枚举类型字段。MyBatis-Plus 会根据 @EnumValue 注解来处理这个字段的数据库存储。

使用@EnumValue注解能有效管理枚举在数据库中的持久化,使得枚举类型的存储和读取更加一致和清晰。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ldbm.cn/p/440264.html

如若内容造成侵权/违法违规/事实不符,请联系编程新知网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【鸿蒙 HarmonyOS NEXT】使用屏幕属性display:获取屏幕宽高

✨本人自己开发的开源项目&#xff1a;土拨鼠充电系统 ✨踩坑不易&#xff0c;还希望各位大佬支持一下&#xff0c;在GitHub给我点个 Start ⭐⭐&#x1f44d;&#x1f44d; ✍GitHub开源项目地址&#x1f449;&#xff1a;https://github.com/cheinlu/groundhog-charging-syst…

10.2 TCP IP模型、IP协议、IPv4、子网掩码

TCP / IP 协议族 IP协议 IPv4地址 IPv4地址分类 子网掩码 子网掩码用来区分 网络地址 和 主机地址 真题 1

大模型之三十-语音合成TTS(coqui)

TTS是text2speech的简称&#xff0c;TTS主要的一些常见包括小说、对话、视频配音、chatbot、虚拟人等场景&#xff0c;因coqui/XTTS-v2生成质量高、完全开源、多语言支持等特点&#xff0c;所以本篇基于coqui/XTTS-v2工具包浅出TTS。官方文档见[link]。 介绍 Coqui TTS 是一个…

JavaScript(进阶篇)

&#x1f30f;个人博客主页&#xff1a;心.c 前言&#xff1a;今天讲解的是JavaScript进阶&#xff0c;希望大家可以有所收获&#xff0c;话不多说&#xff0c;开干&#xff01; &#x1f525;&#x1f525;&#x1f525;文章专题&#xff1a;JavaScript &#x1f63d;感谢大家…

宠物空气净化器352和希喂哪个品牌比较好?352、希喂宠物空气净化器终极PK

家里猫咪掉毛太厉害了怎么办&#xff1f;我家长毛、短毛猫都有&#xff0c;短毛还是猫界蒲公英银渐层&#xff0c;不会再有比曾经的我更受掉毛困扰的铲屎官了&#xff01;我曾经为了减少我家猫咪掉毛&#xff0c;鱼油、维生素A、维生素B5、碘营养物质都在喂&#xff0c;没啥用&…

详细步骤!分享6款AI论文写作助手自动生成器实例操作!

在当今学术研究和写作领域&#xff0c;AI论文生成工具的出现极大地提高了写作效率和质量。这些工具不仅能够帮助研究人员快速生成论文草稿&#xff0c;还能进行内容优化、查重和排版等操作。以下是6款推荐的AI论文写作助手自动生成器实例操作&#xff0c;特别推荐千笔-AIPassPa…

FusionCompute安装

1.应用场景介绍 FusionCompute虚拟化套件&#xff1a;通过在服务器上部署虚拟化软件&#xff0c;将硬件资源虚拟化&#xff0c;从而使一台物理服务器可以承担多台服务器的工作。通过整合现有的工作负载并利用剩余的服务器以部署新的应用程序和解决方案&#xff0c;可以实现较高…

视频智能分析平台LntonAIServer安防监控平台花屏检测、马赛克检测功能介绍

视频监控系统在现代社会中扮演着至关重要的角色&#xff0c;无论是用于安全监控、交通管理还是其他用途&#xff0c;视频的质量直接关系到系统的可靠性和有效性。LntonAIServer通过新增的视频质量诊断功能&#xff0c;包括花屏检测和马赛克检测&#xff0c;进一步增强了视频监控…

kubernetes集群部署Zabbix监控平台

一、zabbix介绍 1.zabbix简介 Zabbix是一个基于Web界面的分布式系统监控的企业级开源软件。可以监视各种系统与设备的参数&#xff0c;保障服务器及设备的安全运营。 2.zabbix特点 &#xff08;1&#xff09;安装与配置简单。 &#xff08;2&#xff09;可视化web管理界面。 &a…

【文心智能体】通过工作流使用知识库来实现信息查询输出,一键查看旅游相关信息,让出行多一份信心

欢迎来到《小5讲堂》 这是《文心智能体平台》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解。 温馨提示&#xff1a;博主能力有限&#xff0c;理解水平有限&#xff0c;若有不对之处望指正&#xff01; 目录 创建灵感基本配置头像名称和简介人物设定角色与目标思考路…

Python操作ES集群API(增删改查等)

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 学习B站博主教程笔记&#xff1a; 最新版适合自学的ElasticStack全套视频&#xff08;Elk零基础入门到精通教程&#xff09;Linux运维必备—Elastic…

工控安全需求分析与安全保护工程

工控系统安全威胁与需求分析 工控系统&#xff08;ICS&#xff09;&#xff0c;是由各种控制组件、监测组件、数据处理与展示组件共同构成的对工业生产过程进行控制和监控的业务流程管控系统 分类&#xff1a;离散制造类和过程控制类 工控系统安全保护机制与技术 工控系统安全…

STM32 RTC实时时钟

RTC实时时钟 BKP可以在VBAT维持供电时&#xff0c;完成主电源掉电时&#xff0c;保存少量数据的任务。备份寄存器和VBAT引脚同时存在&#xff0c;更多是为了服务RTC的。 目前&#xff0c;Linux、Windows、安卓这些系统&#xff0c;底层的计时系统都是使用的Unix时间戳&#xf…

【QT Creator】基本使用

一、常见问题 解答可见以下链接&#xff1a; https://www.cnblogs.com/xia-weiwen/p/10074882.html#title3.1 ** 有关控制台选择构建套件缺失的解决方法可见以下链接 https://blog.csdn.net/xuxu_123_/article/details/131257928 二、如何创建第一个QT项目 第一步&#xf…

如何用AI先行者2.0轻松画出美图?我的亲身体验分享给你看!

越来越多的AI绘画工具开始出现在市场上。AI先行者2.0是一款备受关注的AI绘画软件。本文将为大家详细介绍这款软件的功能特点&#xff0c;并分享一些使用心得。 AI先行者2.0拥有强大的图像处理能力。 它支持多种AI模型&#xff0c;包括Midjourney、Niji、DallE3和Stable Diffu…

第十五届蓝桥杯图形化省赛题目及解析

第十五届蓝桥杯图形化省赛题目及解析 一. 单选题 1. 运行以下程序&#xff0c;角色会说( )? A、29 B、31 C、33 D、35 正确答案&#xff1a;C 答案解析&#xff1a; 重复执行直到m>n不成立&#xff0c;即重复执行直到m<n。所有当m小于或者 等于n时&…

算法工程师重生之第二天(长度最小的子数组 螺旋矩阵II 区间和 开发商购买土地 总结 )

参考文献 代码随想录 一、长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c…

单细胞拟时序/轨迹分析原理及monocle2流程学习和整理

在生命演进的过程中机体会随着时间的变化而产生不同的变化。从婴幼儿长大为成年人再到老年人的过程中&#xff0c;我们的身体机能经历了从"弱-强-弱"的变化过程(宽泛的说)&#xff0c;以年为单位来看&#xff0c;有可能我们在10多岁的时候一年内一下子长高了几十厘米…

MySQL record 01 part

更改密码&#xff1a; alter user rootlocalhost identified with mysql_native_password by ‘123456’; 注意&#xff1a; 在命令行方式下&#xff0c;每条MySQL的命令都是以分号结尾的&#xff0c;如果不加分号&#xff0c;MySQL会继续等待用户输入命令&#xff0c;直到MyS…

【最新华为OD机试E卷-支持在线评测】跳马(200分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-E/D卷的三语言AC题解 💻 ACM金牌🏅️团队| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试E卷,全、新、准,题目覆盖率达 95% 以上,支持…