文章目录
- 枚举
-
- 结合mybatis-plus实现枚举映射存储
-
- 参考学习文章
- 需求,就是我们需求统一管理字段,比如我们规定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,"流程中");;@EnumValueprivate int code;@JsonValueprivate 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 {@AutowiredEnumTestMapper 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**接口输出内容

参考学习文章
- https://juejin.cn/post/7029211885534707725
- https://baomidou.com/guides/auto-convert-enum/#%E6%96%B9%E5%BC%8F%E4%B8%80%E6%B3%A8%E8%A7%A3%E6%A0%87%E8%AE%B0