实体类status属性使用枚举类型的步骤
1. 问题引出
当实体类的状态属性为Integer类型时,容易写错


2. 初步修改
把状态属性强制为某个类型,并且自定义一些可供选择的常量。

public class LessonStatus {public static final LessonStatus NOT_LEARNED = new LessonStatus(0,"未学习");public static final LessonStatus LEARNING = new LessonStatus(1,"学习中");public static final LessonStatus FINISHED = new LessonStatus(2,"已学完");public static final LessonStatus INVALID = new LessonStatus(3,"已失效");private int value;private String desc;private LessonStatus(int value, String desc){this.value=value;this.desc=desc;}
}
在java1.4过后,可以用enum类型代替以上写法
public enum LessonStatus {NOT_LEARNED(0,"未学习"),LEARNING(1,"学习中"),FINISHED(2,"已学完"),INVALID(3,"已失效");private int value;private String desc;LessonStatus(int value,String desc){this.value = value;this.desc = desc;}
}
使用该类型

3. @EnumValue
但是这样做,将数据插入表时会产生类型不匹配的问题。实体类为enum类型,表的列属性为tinyint类型。

因此,给需要注入值的字段加上@EnumValue注解,表示插入数据库时,实际上插入的是该字段而不是整个枚举对象。

再次测试,成功

4. 使用案例
@JsonValue:与@EnumValue相似,转换成json对象时,只序列化该注解下的字段
@JsonCreator:json反序列化,将该字段转换成一个object对象
@Getter
public enum LessonStatus implements BaseEnum {NOT_BEGIN(0, "未学习"),LEARNING(1, "学习中"),FINISHED(2, "已学完"),EXPIRED(3, "已过期"),;@JsonValue@EnumValueint value;String desc;LessonStatus(int value, String desc) {this.value = value;this.desc = desc;}@JsonCreator(mode = JsonCreator.Mode.DELEGATING)public static LessonStatus of(Integer value){if (value == null) {return null;}for (LessonStatus status : values()) {if (status.equalsValue(value)) {return status;}}return null;}
}
@Getter
public enum PlanStatus implements BaseEnum {NO_PLAN(0, "没有计划"),PLAN_RUNNING(1, "计划进行中"),;@JsonValue@EnumValueint value;String desc;PlanStatus(int value, String desc) {this.value = value;this.desc = desc;}@JsonCreator(mode = JsonCreator.Mode.DELEGATING)public static PlanStatus of(Integer value){if (value == null) {return null;}for (PlanStatus status : values()) {if (status.equalsValue(value)) {return status;}}return null;}
}
json序列化见下一篇博客@JsonValue和@JsonCreator使用。
相关文章:
实体类status属性使用枚举类型的步骤
1. 问题引出 当实体类的状态属性为Integer类型时,容易写错 2. 初步修改 把状态属性强制为某个类型,并且自定义一些可供选择的常量。 public class LessonStatus {public static final LessonStatus NOT_LEARNED new LessonStatus(0,"未学习"…...
pytorch基础【4】梯度计算、链式法则、梯度清零
文章目录 梯度计算计算图(Computational Graph)梯度求导(Gradient Computation)函数与概念 示例代码更多细节梯度求导的过程梯度求导的基本步骤示例代码注意事项总结 链式法则是什么?链式法则的数学定义链式法则在深度…...
mapreduce综合应用案例 — 招聘数据清洗
MapReduce是一个编程模型和处理大数据集的框架,它由Google开发并广泛使用于分布式计算环境中。MapReduce模型包含两个主要的函数:Map和Reduce。Map函数用于处理输入的键值对生成中间键值对,Reduce函数则用于合并Map函数输出的具有相同键的中间…...
发力采销,京东的“用户关系学”
作者 | 曾响铃 文 | 响铃说 40多岁打扮精致的城市女性,在西藏那曲的偏远农村,坐着藏民的摩托车,行驶在悬崖边的烂泥路上,只因为受顾客的“委托”,要寻找最原生态的藏区某款产品。 30多岁的憨厚中年男性,…...
期望23K,go高级社招面试复盘
面经哥只做互联网社招面试经历分享,关注我,每日推送精选面经,面试前,先找面经哥 我最终还是上岸了,花了一周总结了3万字的go社招高级面试知识体系思维导图,分享出来希望能帮助有缘人吧,以下只是…...
电感(线圈)具有哪些基本特性
首先,电感(线圈)具有以下基本特性,称之为“电感的感性电抗” ?①直流基本上直接流过。 ?②对于交流,起到类似电阻的作用。 ?③频率越高越难通过。 下面是表示电感的频率和阻抗特性的示意图。 在理想电感器中&#…...
tkinter实现一个GUI界面-快速入手
目录 一个简单界面输出效果其他功能插入进度条文本框内容输入和删除标签内容显示和删除 一个简单界面 含插入文本、文本框、按钮、按钮调用函数 # -*- coding: UTF-8 -*-import tkinter as tk from tkinter import END from tkinter import filedialog from tkinter impor…...
Top10在线音频剪辑软件,你了解几款?(免费分享)
多年来,随着音乐制作人和音频工程师的需求不断增长,音频剪辑软件领域经历了巨大的发展。最新的音频剪辑软件提供了从基本录制到最终发布所需的一切功能。其中一些软件专为播客设计,一些软件是免费的,并且一些软件提供了出色的音效…...
mysql报错:You can‘t specify target table ‘Person‘ for update in FROM clause
背景 在做leetcode里数据库的196题删除重复数据时,我参考评论区大佬的方法先用group by找到每个分组里的最小的id的那条记录,然后删掉原表中id不在其中的记录,然后就报了如题所示的错误。 我的写法如下: DELETE FROMPerson WHER…...
Python sorted()方法
sorted() 是Python中的一个内置函数,用于对可迭代对象进行排序。它返回一个新的已排序的列表,而不会修改原始的可迭代对象。sorted() 函数的基本语法如下: sorted(iterable, keyNone, reverseFalse)参数解释: iterableÿ…...
云上宝库:三大厂商对象存储安全性及差异性比较
前言 看了几家云厂商的对象存储,使用上有相似也有差异,聊聊阿里云、腾讯云、京东云三家对象存储在使用中存在的风险以及防护措施。 0x01 云存储命名 阿里云对象存储OSS(Object Storage Service),新用户免费试用三个月,存储包容…...
【计算机网络体系结构】计算机网络体系结构实验-www实验
二、www实验 1. 添加网站 2. 浏览器打开...
Windows下MySQL数据库定期备份SQL文件与删除历史备份文件.bat脚本
目录 一、功能需求 二、解决方案 (1)新建文件夹及批处理文件 (2)编写备份脚本 ①完整脚本 ②参数修改 (3)编写定期删除备份脚本 ①根据文件名识别日期进行删除 ② 根据文件的修改日期删除 (4)设置定时器 (5)常见报错与处理 一、功能需求 在Windows系统下…...
electron基础使用
安装以及运行 当前node版本18,按照官网提供操作,npm init进行初始化操作,将index.js修改为main.js,执行npm install --save-dev electron。(这里我挂梯子下载成功了。),添加如下代码至package.…...
9.华为交换机telnet远程管理配置aaa认证
目的:telnet远程管理设备 LSW1配置 [Huawei]int Vlanif 1 [Huawei-Vlanif1]ip add 1.1.1.1 24 [Huawei-Vlanif1]q [Huawei]user-interface vty 0 4 [Huawei-ui-vty0-4]authentication-mode aaa [Huawei-ui-vty0-4]q [Huawei]aaa [Huawei-aaa]local-user admin pass…...
xcode报错合集,你都遇到过哪些跳不过的坑
1.报错Consecutive declarations on a line must be separated by ; 其实我这里是用因为创建了一个结构体,然后在没有使用State的情况下,修改它的属性了 当然加上State依然报错: 应该在UI事件中修改:...
六面体大米装袋机长期稳定运行原因分析
随着现代化农业生产的发展,六面体大米装袋机已成为粮食加工行业不可或缺的重要设备。然而,如何确保这些机器长期稳定运行,提高生产效率,降低维护成本,一直是广大粮食加工企业关注的焦点。星派将为您揭示六面体大米装袋…...
android的surface
相信很多Android开发者都知道Canvas类是UI的画布(虽然这种说法并不严谨),因为我们在Canvas上完成各种图形的绘制,那么我们Activity上的各种交互控件又是如何展示并渲染到屏幕上的呢,所以在另一个层面上也有一个“画布”…...
Z世代职场价值观的重塑:从“班味”心态到个人成长的追求
近日,社交平台Soul APP联合上海市精神卫生中心(俗称“宛平南路600号”)发布《2024年Z世代职场心理健康报告》(下称“报告”),发现今天的年轻人正以其独特的价值观和行为模式,重新定义成功与成就…...
【Python】Python 2 测试网络连通性脚本
文章目录 前言1. 命令行传参2. 代码 前言 最近在只有python2的服务器上部署服务,不能用三方类库,这里出于好奇心学习下python。这里简单做个脚本,实现了检验网络连通性的功能(类似于curl)。 1. 命令行传参 使用命令…...
OpenClaw安全加固:Qwen3.5-9B操作权限的4层防护
OpenClaw安全加固:Qwen3.5-9B操作权限的4层防护 1. 为什么需要安全加固? 上周我在用OpenClaw自动处理一份包含客户联系方式的Excel表格时,突然意识到一个问题:如果AI助手误操作删除了关键文件怎么办?更可怕的是&…...
【ComfyUI】Qwen-Image-Edit-F2P 环境配置全攻略:Anaconda创建独立Python环境
ComfyUI Qwen-Image-Edit-F2P 环境配置全攻略:Anaconda创建独立Python环境 你是不是也遇到过这种情况:好不容易找到一个好用的AI图像编辑模型,比如Qwen-Image-Edit-F2P,兴冲冲地准备在ComfyUI里跑起来,结果第一步安装…...
从预处理指令看跨语言兼容:手把手封装C++库供C调用的5个关键步骤
从预处理指令看跨语言兼容:手把手封装C库供C调用的5个关键步骤 在嵌入式开发和SDK设计中,经常需要将C库封装成C语言接口。这种跨语言调用看似简单,实则暗藏玄机。本文将深入剖析extern "C"和__cplusplus预处理指令的底层原理&#…...
24/7运行指南:OpenClaw+GLM-4-7-Flash树莓派部署与看门狗配置
24/7运行指南:OpenClawGLM-4-7-Flash树莓派部署与看门狗配置 1. 为什么选择树莓派作为OpenClaw的宿主设备? 去年冬天,当我第一次尝试让OpenClaw在我的主力开发机上24小时运行时,遭遇了严重的资源冲突问题。半夜运行的自动化任务…...
LFM2.5-1.2B-Thinking部署教程:3步实现Python爬虫数据智能处理
LFM2.5-1.2B-Thinking部署教程:3步实现Python爬虫数据智能处理 1. 引言 你是不是经常遇到这样的问题:爬虫抓取了一大堆数据,但面对杂乱无章的文本内容却无从下手?手动整理不仅耗时耗力,还容易出错。现在,…...
LumiPixel优化升级:如何利用Z-Image模型生成更细腻的像素人像
LumiPixel优化升级:如何利用Z-Image模型生成更细腻的像素人像 1. 引言:像素艺术的复兴与挑战 像素艺术作为一种独特的数字艺术形式,近年来在游戏、NFT和数字设计领域迎来复兴。然而传统像素创作面临两大核心挑战: 细节表现力不…...
【CDA干货】三个部门三个营收数:1200 万、1150 万、1280 万?企业指标口径不一致,三步破局
财务部报的Q3营收是1200万,运营部那边却是1150万,更离谱的是CEO给投资人看的PPT上写着1280万。这种事儿听起来是不是很离谱?但实际上,数据对不上,这事儿太常见了。表面看是数字打架,实际上是人跟人较劲——…...
3大核心能力重新定义macOS炉石传说对战体验:HSTracker全方位辅助系统解析
3大核心能力重新定义macOS炉石传说对战体验:HSTracker全方位辅助系统解析 【免费下载链接】HSTracker A deck tracker and deck manager for Hearthstone on macOS 项目地址: https://gitcode.com/gh_mirrors/hs/HSTracker HSTracker是一款专为macOS平台设计…...
ViGEmBus终极指南:Windows游戏控制器虚拟化完整解决方案
ViGEmBus终极指南:Windows游戏控制器虚拟化完整解决方案 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus Windows游戏控制器虚拟化是许多PC游戏玩…...
告别手动编译:用Conda在Ubuntu 20.04上一键安装与管理SUMO交通仿真环境
告别手动编译:用Conda在Ubuntu 20.04上一键安装与管理SUMO交通仿真环境 在交通工程和智能驾驶研究领域,SUMO(Simulation of Urban MObility)作为开源的微观交通仿真工具,正被越来越多的研究者和开发者采用。然而&#…...
