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

实体类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&#xff…...

云上宝库:三大厂商对象存储安全性及差异性比较

前言 看了几家云厂商的对象存储,使用上有相似也有差异,聊聊阿里云、腾讯云、京东云三家对象存储在使用中存在的风险以及防护措施。 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. 命令行传参 使用命令…...

瓦罗兰特教你怎么玩低价区+超适配低价区的免费加速器

《无畏契约》(VALORANT)是一款款英雄为核心的5V5第一人称战术射击PC游戏。在瓦罗兰特游戏中,玩家完成每日任务即可以获得大量的经验升级,另外我们也可以多多完成主线和支线任务,来加快升级的速度。玩家通过挑战副本&am…...

Linux安装kvm虚拟机

kvm是基于内核的虚拟机,为什么要用kvm不用vmware、virtual box… 只有一个原因,它非常快!本机使用linux开发也是因为它快!linux在老电脑上都能流畅运行,更别说现代电脑,如果你觉得装Linux并没有比win快多少…...

@pytest.fixture与@pytest.mark.parametrize结合实现参数化

背景:测试数据既要在fixture方法中使用,同时也在测试用例中使用 使用方法:在使用parametrize的时候添加"indirectTrue"参数。pytest可以实现将参数传到fixture方法中,也可以在当前测试用例中使用。 原理:参…...

uniapp中unicloud接入支付宝订阅消息完整教程

经过无数次的尝试,终于还是让我做出来了 准备工作 设置接口加签方式 使用支付宝小程序订阅消息,首先要设置接口加签方式,需要下载支付宝开放平台密钥工具,按照步骤生成秘钥,然后按照支付宝设置密钥加签方式添加接口加签方式。 有一点需要注意的,因为要在云函数中使用,…...

PHP 标准建议psr

PSR-1: Basic Coding Standard(基础编码标准) PSR-1 定义了PHP代码文件的基本编写规范,它关注的是代码文件的结构和一些通用的编程约定,主要包括: 文件命名:PHP文件必须以.php为后缀。PHP标签&#xff1a…...

第九届信也科技杯全球AI算法大赛——语音深度鉴伪识别参赛A榜 0.968961分

遗憾没有进复赛,只是第41名。先贴个A榜的成绩。A榜的前三十名晋级,个个都是99分的大佬,但是B榜的成绩就有点低了,应该是数据不同源的问题,第一名0.78分。官网链接:语音深度鉴伪识别 官方baselin:https://g…...

【设计模式(三) 设计模式的分类 】

设计模式(DesignPattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。 使用设计模式的目的 :为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。设计模式使代码编写真正工程化;设计模式是软件工程…...

Linux进程概念(个人笔记)

Linux进程概念 1.冯诺依曼体系结构2.操作系统(先描述,再组织)3.进程3.1查看进程的方式3.2通过系统调用获取进程标识符3.4查看进程中常见字段状态的指令3.3fork创建子进程3.3.1fork的原理 3.4进程状态3.5进程优先级3.5.1Linux内核的调度队列与…...

每天五分钟计算机视觉:如何在现有经典的卷积神经网络上进行微调

本文重点 在深度学习领域,卷积神经网络(Convolutional Neural Networks,CNN)因其强大的特征提取和分类能力而广泛应用于图像识别、自然语言处理等多个领域。然而,从头开始训练一个CNN模型往往需要大量的数据和计算资源,且训练时间较长。幸运的是,迁移学习(Transfer Le…...

10个典型的MySQL笔试题和面试题

提供10个典型的MySQL笔试题和面试题作为示例,并给出答案或解释。如果需要更多题目,可以根据这些示例进行扩展或参考相关文档。 1. MySQL是什么? 答案:MySQL是一个关系型数据库管理系统(RDBMS)&#xff0c…...

wordpress短信插件/池州网络推广

一、免费学术搜索引擎 1.谷歌学术:http://scholar.glgoo.org/ 2.百度学术:http://xueshu.baidu.com/ 3.360学术: 4.读秀:http://www.duxiu.com/ 5.必应: 1.Scholar google:http://scholar.googl…...

庆元建设局网站/营销方式有哪几种

11111111111111111111...

做网站用vps还是虚拟主机/青柠影院免费观看电视剧高清

静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。查看当前工程目录的内容[rootroot config-file]# tree .…...

网站建设费一般多少/优化网站结构一般包括

导语 使用编译的方式来安装 PHP 7。 安装编译工具、依赖包 输入 yum -y install libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel mhash gd gd-devel 进行安装,可以根据自己的实际情况进行调整…...

网站程序上传教程/公众号seo排名软件

什么是Netty? 在网络编程这个系列文章中,之前在讲解的东西仅仅只是一个模型,如果真在要在工作中去实际应用还要不断完善、扩展、优化。比如TCP拆包和粘包问题,或者是数据接收的大小等等问题都需要认证的去思考,而这些是…...

莱芜网站建设公司/seo优化资源

__slots__限制class的属性 __slots__定义的属性仅对当前类实例起作用,对继承的子类是不起作用的 代码示例 # -*- coding: utf-8 -*-# File : slots_demo.py # Date : 2018-05-29class Dog(object):def __init__(self, name):self.name nameclass Cat(obje…...