- 需求,就是我们需求统一管理字段,比如我们规定a是开始 b是结束,那么在数据库存储的时候就可以存储单个字符
枚举
- 我们先来了解下Java的枚举
- Java的枚举我简单理解就是特殊的类,类所有的写法,枚举也可以有~
简单枚举
public enum enum1 {
RED, GREEN, BLANK, YELLOW;
public static void main(String[] args) {
System.out.println(enum1.BLANK);
}
}

带构造函数的枚举
- 就是可以存储多个数据啦
- 需求就是我们希望这个枚举可以有多个信息,而不是变量名和值一样,比如我规定a代表code为200,message为"成功’这种
a -> {
code:200,
message:"成功",
}
public enum enum2 {
SUCCESS(200,"成功"),
FAIL(500,"失败")
;
private int code;
private String message;
enum2(int code,String message){
this.code = code;
this.message = message;
}
public int getCode(){
return this.code;
}
public String getMessage(){
return this.message;
}
public static void main(String[] args) {
enum2 one = enum2.FAIL;
System.out.println(one.getCode());
System.out.println(one.getMessage());
}
}
结合mybatis-plus实现枚举映射存储
- 就是数据库存储a,然后用户看到的是更复杂的数据
- 比如数据库存储1 后面查询返回给用户的实际是"已开始"
- 目前依赖如下,可以看到mybatis-plus为3.5.12

配置
- 貌似3.5不需要配置什么枚举扫描类的包和handler了,只需要添加@EnumValue和@JsonValue就可以
使用
@Getter
public enum EnumTest3 {
END(-1,"中止"),
STARTED(1,"已开始"),
COMPLETE(2,"已结束"),
PROCESS(3,"流程中");
;
@EnumValue
private int code;
@JsonValue
private String status;
EnumTest3(int code,String status){
this.code = code;
this.status = status;
}
}
import com.example.demo_6.enums.EnumTest3;
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("enum_test")
public class EnumTest {
@TableId(type = IdType.AUTO)
private int id;
private EnumTest3 status;
}
package com.example.demo_6.Req;
import com.example.demo_6.enums.EnumTest3;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TestEnumReq {
private EnumTest3 status;
}
package com.example.demo_6.controller;
import com.example.demo_6.Req.TestEnumReq;
import com.example.demo_6.entity.EnumTest;
import com.example.demo_6.enums.EnumTest1;
import com.example.demo_6.enums.EnumTest3;
import com.example.demo_6.mapper.EnumTestMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/enumTest")
public class TestEnumController {
@Autowired
EnumTestMapper enumTestMapper;
@PostMapping("/insert")
public int one(@RequestBody TestEnumReq enumReq) {
EnumTest test1 = new EnumTest();
test1.setStatus(enumReq.getStatus());
return enumTestMapper.insert(test1);
}
@PostMapping("/list")
public List<EnumTest> list() {
return enumTestMapper.selectList(null);
}
}

- 调用**/enumTest/list**接口输出内容

参考学习文章