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

javaweb后端优雅处理枚举

用了springboot-web自带的jackson注解

用了mybaits-plus注解

1.前端用json的格式,都要能正确解析参数(反序列化)传入后端

2.后端能正确把数值存到数据库(序列化)

3.后端给前端返回数值

代码示例:

/*** 视频状态枚举*/
@AllArgsConstructor
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum VideoStatusEnum {DRAFT(0, "草稿"),PUBLISHED(1, "发布"),OFFLINE(2, "下线");@JsonValue@Getter@EnumValueprivate final Integer code;@Getterprivate final String desc;/*** 根据 code 获取枚举*/public static VideoStatusEnum of(Integer code) {if (code == null) return null;for (VideoStatusEnum value : values()) {if (value.code.equals(code)) return value;}throw new IllegalArgumentException("No enum constant code:" + code);}
}

上面的已经解决了很多很多种情况了,90%了,这就可以了。

其他情况:(我不常用)

但是如果是get请求中的请求参数呢?他就不是json格式了

像这样,http://localhost:8080/test?videoStatus=0,这样就不行。

但是,http://localhost:8080/test?videoStatus=DRAFT,这样就行。(只能用DRAFT,不能是Draft、draft,这个大小写敏感的,会抛出异常)。

可以配上这个转换器

/*** String -> VideoStatusEnum* 同时兼容:*   ?status=DRAFT   常量名*   ?status=0       数字 code*/
@Component
public class StringToVideoStatusEnumConverter implements Converter<String, VideoStatusEnum> {@Overridepublic VideoStatusEnum convert(String source) {if (source == null || source.isEmpty()) {return null;}source = source.trim();// 1. 先按 code 整数试try {int code = Integer.parseInt(source);return VideoStatusEnum.of(code);} catch (NumberFormatException ignored) {// 2. 再按枚举名试return VideoStatusEnum.valueOf(source.toUpperCase());}}
}

http://www.dtcms.com/a/461198.html

相关文章:

  • 帝国cms小程序搞起来简直好用的不行
  • 高效批量调整图像尺寸的方案
  • 单片机供电处3.3V大电容导致程序可进调试但是无法暂停到具体语句
  • Java 实战:为 Word 文档中的文本与段落添加边框
  • 创业网站怎么做网站建设与网页设计...
  • git大文件储存机制是什么-为什么有大文件会出错并且处理大文件非常麻烦-优雅草卓伊凡
  • 机器学习之规则学习(Rule Learning)
  • 【神经网络】从逻辑回归到神经网络
  • 工厂抽烟检测系统 智能化安全管控新方案 加油站吸烟检测技术 吸烟行为智能监测
  • 做外贸怎么看外国网站wordpress配置邮件发送
  • 使用Python对PDF进行拆分与合并
  • 嵌入式软件/硬件工程师面试答案
  • 6.DSP学习记录之定时器
  • 阳春新农村建设网站中铁建设集团有限公司西北分公司
  • 简化OffSec考试报告编写:OSCP-Exam-Report-Template-Markdown项目详解
  • 北京网站设计制作过程数据服务网站开发
  • Go基础:一文掌握Go语言网络编程
  • TENGJUN-3.5MM耳机插座(JA06-BPF032-A):反向沉板结构下的4极音频连接解决方案
  • 使用IOT-Tree接入各种设备转OPC UA Server输出
  • 【大模型实战篇】从Python函数到MCP服务器:完整转换示例
  • 怎样增加网站的权重小企业做网站有用吗
  • 【ArkTS-通用事件】
  • 为什么要放弃用Docker?
  • 东方仙盟修仙(五)赛博科技修仙养老是一种爱好
  • 大模型训练过程中主动学习和课程学习的全面对比
  • Redis数据库隔离业务缓存对查询性能的影响分析
  • Mapper接口的解析
  • 网站中链接怎么做的广东网站建设案例
  • 网站开发部门结构公司做网站的费用属于什么费用
  • 做电影方面的网站怎么做外贸免费平台