(MybatisPlus)通用枚举

在一个用户User实体类中,有一个status字段,1表示冻结,2表示可用

java 复制代码
    /**
     * 使用状态(1正常 2冻结)
     */
    private Integer status;

然而在更复杂的业务情况下,这个字段值往往会有多个,当值变多的话,我们无法记住所有的

所以我们定义了一个枚举类

java 复制代码
package com.itheima.mp.enums;
 
import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.Getter;
 
@Getter
public enum UserStatus {
    NORMAL(1, "正常"),
    FREEZE(2, "冻结")
    ;
    private final int value;
    private final String desc;
 
    UserStatus(int value, String desc) {
        this.value = value;
        this.desc = desc;
    }
}

方法一(非MybatisPlus):

这样子我们在比较的时候,就可以通过与枚举类的value值来进行比较了

方法二(用MybatisPlus通用枚举处理器):

User类中的status字段改为UserStatus 类型:

java 复制代码
    /**
     * 使用状态(1正常 2冻结)
     */
    private UserStatus status;

但是我们在数据库中的字段仍然还是int类型的,所以为了让MybatisPlus处理枚举与数据库类型自动转换,我们必须告诉MybatisPlus,枚举中的哪个字段的值作为数据库值。

MybatisPlus提供了@EnumValue注解来标记枚举属性:

以及在UserStatus枚举中通过@JsonValue注解标记JSON序列化时展示的字段(最后返回的响应结果应该展示哪个值,默认是枚举的字段名,如果放在value上面那么就会是value):

java 复制代码
package com.itheima.mp.enums;

import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.Getter;

@Getter
public enum UserStatus {
    NORMAL(1,"正常"),
    FROZEN(2,"冻结");


    @EnumValue //这样mp就知道是把这个属性往数据库里面去写
    @JsonValue //将来返回的就是value值,否则默认就是NORMAL或者FROZEN
    private final int value;
    private final String desc;

    UserStatus(int value, String desc) {
        this.value = value;
        this.desc = desc;
    }

    public int getValue() {
        return value;
    }

    public String getDesc() {
        return desc;
    }
}

此外还需要在application.yaml文件中添加配置:

java 复制代码
mybatis-plus:
  configuration:
    default-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler

具体的业务代码:总结:

相关推荐
毕设源码-朱学姐41 分钟前
【开题答辩全过程】以 查寝打卡系统为例,包含答辩的问题和答案
java·eclipse
QMY5205201 小时前
爬虫的意义
java·spring·tomcat·maven
lang201509282 小时前
Spring Boot Actuator深度解析与实战
java·spring boot·后端
重生之我是Java开发战士2 小时前
【Java EE】了解Spring Web MVC:请求与响应的全过程
spring boot·spring·java-ee·1024程序员节
懒羊羊不懒@2 小时前
Java—枚举类
java·开发语言·1024程序员节
zerolala2 小时前
Java容器常用方法
java·1024程序员节
m0_748240252 小时前
C++智能指针使用指南(auto_ptr, unique_ptr, shared_ptr, weak_ptr)
java·开发语言·c++
lang201509282 小时前
Spring注解配置全解析
java·后端·spring
Qyt-Coding3 小时前
flowable学习
java
崎岖Qiu3 小时前
【SpringAI篇01】:5分钟教会你使用SpringAI (1.0.0稳定版)
java·spring boot·后端·spring·ai