产品互联网做推广做什么网站好,文明网站建设培训体会,深圳室内设计公司排行,婚礼策划婚礼定制目录
1、讲讲好处 2、例子
#xff08;1#xff09;枚举类#xff1a;
#xff08;2#xff09;DTO类#xff1a;
3、根据上面例子进行具体讲解 1、讲讲好处
在使用这种标准枚举模式编写业务逻辑时,可以直接通过枚举成员来表示状态,不需要担心底层的 value 或描述信…目录
1、讲讲好处 2、例子
1枚举类
2DTO类
3、根据上面例子进行具体讲解 1、讲讲好处
在使用这种标准枚举模式编写业务逻辑时,可以直接通过枚举成员来表示状态,不需要担心底层的 value 或描述信息,使代码更简洁。
枚举类会 handles 序列化和反序列化的过程,确保: 1. 在返回JSON时,自动序列化为 value 或描述信息 2. 在接收前端数据时,自动根据 value 反序列化为枚举成员 3. 在保存到数据库时,自动转换为对应的 value 值 4. 在读取数据库数据时,自动根据 value 转换为枚举成员 所以我们只需要在业务代码中直接使用枚举成员,不需要做任何额外的处理,枚举类会负责与底层值的转换,使业务代码精简和高效。 2、例子
1枚举类
import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import com.tianji.common.enums.BaseEnum;
import lombok.Getter;Getter //使用Getter注解自动生成getter方法
public enum SectionType implements BaseEnum { //实现BaseEnum接口,标识这是一个枚举类VIDEO(1, 视频),EXAM(2, 考试),;JsonValue //把value值返回给前端(在JSON序列化时返回value的值)EnumValue //把枚举的value转成数据库需要的int value;String desc;SectionType(int value, String desc) {this.value value;this.desc desc;}JsonCreator(mode JsonCreator.Mode.DELEGATING) //前端提交form表单,of方法:将value转变成对应的枚举public static SectionType of(Integer value){if (value null) {return null;}for (SectionType status : values()) {if (status.equalsValue(value)) {return status;}}return null;}
}
2DTO类
当前端form表单提交数据给后端时其中一个参数是这个枚举类中的枚举值。
此时后端通过DTO类来接收数据其中定义一个成员属性举个例子 EnumValid 注解来验证枚举值的合法性 EnumValid 注解的主要参数: - enumeration指定一个合法的枚举值数组,这里是{1, 2}枚举的 value 值 - message:验证不通过时的错误提示信息 Data
ApiModel(description 学习记录)
public class LearningRecordFormDTO {ApiModelProperty(小节类型1-视频2-考试)NotNull(message 小节类型不能为空)EnumValid(enumeration {1, 2}, message 小节类型错误只能是1-视频2-考试)private SectionType sectionType;} 3、根据上面例子进行具体讲解
这是一种典型的枚举类写法,具有以下几个特点: 1. 使用Getter注解自动生成getter方法 2. 实现BaseEnum接口,标识这是一个枚举类 3. 每个枚举成员都有一个int类型的value字段,表示数据库存储的值 4. 使用JsonValue注解,在JSON序列化时返回value的值 5. 使用EnumValue注解,将value值转成数据库字段 6. 提供一个of方法,可以通过value值获取对应的枚举实例 7. of方法使用JsonCreator注解,允许通过JSON反序列化获取枚举 8. of方法实现通过value值查找枚举实例的逻辑 9. 加入对null值的处理,保证健壮性总体来说,这种枚举类实现了将枚举值与数据库值映射的功能,同时可以方便的进行JSON序列化和反序列化。 10.配合标准枚举类写法,通过 EnumValid 注解可以非常方便地实现自定义的枚举值验证,提高代码的健壮性。