Springboot中使用枚举
枚举映射数据库字段
配置枚举包扫描路径
mybatis-plus:
# 扫描通用枚举
type-enums-package: com.xx.**.enums
方法一:@EnumValue 和 @JsonValue
在枚举中使用注解 @EnumValue 和 @JsonValue
- 当SexEnum作为一个实体对象的属性时,那么该属性所映射的数据库字段就是@EnumValue作用的值
- 如果该实体对象返回到前端,那么该枚举属性对应的值就是@JsonValue修饰的字段
@Getter
@AllArgsConstructor
public enum SexEnum implements BaseEnum {
MALE(1, "男"),
FEMALE(0, "女"),
UNKNOW(2, "未知")
;
@EnumValue
private final Integer code;
@JsonValue
private final String desc;
}
方法二:实现IEnum接口
- 重写getValue等同于使用@EnumValue注解,重写toString等同于使用@JsonValue注解
@AllArgsConstructor
@Getter
//IEnum<Integer> Inteter泛型表示映射到数据库的字段类型
public enum BusinessStatusEnum implements IEnum<Integer>{
FAIL(0, "失败"),
SUCCESS(1, "成功"),
;
private final Integer code;
private final String desc;
@Override
public Integer getValue() {
return code;
}
@Override
public String toString() {
return this.desc;
}
}
- 再配置一下jackson的反序列化枚举 write_enums_using_to_string
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
serialization:
write_enums_using_to_string: true
@RequestBody中枚举不匹配问题 空字符串转枚举异常
如果前端传的值是枚举中的字符串,进入后端会转换成枚举参与运行,存入数据库时会转换成字符串对应的数字。
但如果前端传入的是"",而不是null,因找不到对应的枚举值,匹配出现异常。
/**
* 枚举字段可以使用null、空字符串、非匹配的任意字符串进行传参,而不引发异常
*/
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Autowired
private ObjectMapper objectMapper;
@PostConstruct
public void myObjectMapper() {
// 解决enum不匹配问题 默认值为false
objectMapper.configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL, true);
}
}
其他情况
前端在调用增删改查接口的时候,传入类似 status='1',{'sex':1}之类的参数,那如何在这个接口接参(专业点说叫json反序列化)的过程中把魔法数字转换成枚举对象呢?
Springboot中使用枚举的更多相关文章
- Springboot中使用Xstream进行XML与Bean 相互转换
在现今的项目开发中,虽然数据的传输大部分都是用json格式来进行传输,但是xml毕竟也会有一些老的项目在进行使用,正常的老式方法是通过获取节点来进行一系列操作,个人感觉太过于复杂.繁琐.推荐一套简单的 ...
- 学习Spring Boot:(十二)Mybatis 中自定义枚举转换器
前言 在 Spring Boot 中使用 Mybatis 中遇到了字段为枚举类型,数据库存储的是枚举的值,发现它不能自动装载. 解决 内置枚举转换器 MyBatis内置了两个枚举转换器分别是:org. ...
- SpringBoot中使用SpringDataJPA
SpringDataJPA的使用 JPA是什么? JPA(Java Persistence API)是Sun官方提出的Java持久化规范. 为Java开发人员提供了一种对象/关联映射工具来管理Java ...
- springboot 中如何正确在异步线程中使用request
起因: 有后端同事反馈在异步线程中获取了request中的参数,然后下一个请求是get请求的话,发现会偶尔出现参数丢失的问题. 示例代码: @GetMapping("/getParams&q ...
- SpringBoot中搭配AOP实现自定义注解
1 springBoot的依赖 确定项目中包含可以注解的依赖 <dependency> <groupId>org.springframework.boot</groupI ...
- SpringBoot中yaml配置对象
转载请在页首注明作者与出处 一:前言 YAML可以代替传统的xx.properties文件,但是它支持声明map,数组,list,字符串,boolean值,数值,NULL,日期,基本满足开发过程中的所 ...
- 如何在SpringBoot中使用JSP ?但强烈不推荐,果断改Themeleaf吧
做WEB项目,一定都用过JSP这个大牌.Spring MVC里面也可以很方便的将JSP与一个View关联起来,使用还是非常方便的.当你从一个传统的Spring MVC项目转入一个Spring Boot ...
- Python 中的枚举类型~转
Python 中的枚举类型 摘要: 枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表示某些特定的有限集合,例如星期.月份.状态等. 枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表 ...
- springboot中swaggerUI的使用
demo地址:demo-swagger-springboot springboot中swaggerUI的使用 1.pom文件中添加swagger依赖 2.从github项目中下载swaggerUI 然 ...
- JavaScript中的枚举
在JavaScript目前的版本中,没有枚举这个概念(当然,ECMA-262第三版中已经将enum作为关键字保留). 然而,如同JavaScript中没有class一样,但我们仍然可以通过间接的方式- ...
随机推荐
- Qt中跨进程Socket通信以及socket跨线程通信
一 QTcpServer 创建流程 创建套接字服务器 QTcpServer 对象, 通过 QTcpServer 对象设置监听,即:QTcpServer::listen() 基于 QTcpServer: ...
- Bat命令进行压缩X文件夹下的文件夹及文件
输出日志 echo off for /d %%i in (D:\project101\trunk\x_client\xProject\Assets\AssetBundles\Android~\*.) ...
- 从零搭建hadoop集群之克隆虚拟机
1. 选中一台已关闭的虚拟机,在虚拟机名称上,右键点击,选择"管理",再选择"克隆", 出现如下画面: 2. 点击"下一步",出现如下画面: ...
- 微信小程序监听view到顶部的高度
view style='width:100%;height:80rpx;' id='navigation'></view> wx.createSelectorQuery().sele ...
- java学习流程(java学习之路)
Java学习流程 Java SE(18-20天) 1.计算机基础 2.博客的重要性 3Java基础语法 4.流程控制和方法 5 .数组 6 .面向对象 7 .异常 8 .常用类 9 .集合框架 10 ...
- Java字段名由驼峰命名转换为下划线命名
private String toUnderlineName(String name) { StringBuilder result = new StringBuilder(); if (name = ...
- Vulnhub 靶场 LOOZ: 1
Vulnhub 靶场 LOOZ: 1 前期准备: 靶机地址:https://www.vulnhub.com/entry/looz-1,732/ kali攻击机ip:192.168.147.190 靶机 ...
- docker镜像原理(一)
在理解什么是docker镜像之前我们需要搞懂虚拟机系统到底是怎么组成的如何实现的,docker中又是如何安装和使用虚拟机系统的,怎样可以高效灵活的切换系统发行版等问题 一.centos7系统长什么样 ...
- 通过EXCEL/WPS文件,拼接SQL,刷数据库数据
WPS如何把日期变成文本格式? [快捷选择同一列多条记录]同一列,鼠标左键标记A,SHIFT+鼠标左键标记B ,等于选择A-B的之间的数据 [向下填充]在第一行输入数据,选择同一列A-B的之间的数据, ...
- AES可以加密成
AES可以生成HEX的字符串如{[m9LJfF4fYtt+PGoAA5WmL+6RFh5oVvrlCQpVhLyk3l28XqS3D4Qd+ehOdvqLcUrFKcyBV3hygXHU3We33bY ...