(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

具体的业务代码:总结:

相关推荐
Mr Tang6 分钟前
Docker日志查看和应用日志查看命令大全
java·开发语言
invicinble8 分钟前
java处理数据合集
java·开发语言
Json_26 分钟前
springboot框架对接物联网,配置TCP协议依赖,与设备通信,让TCP变的如此简单
java·后端·tcp/ip
C+++Python33 分钟前
Java 锁机制
java·开发语言
czlczl2002092534 分钟前
Spring Security 6 :配置生产级 SecurityFilterChain
java·spring
Java小白,一起学习38 分钟前
AndroidStudio安装教程
java·android-studio
学编程就要猛39 分钟前
算法:3.快乐数
java·算法
高山上有一只小老虎39 分钟前
如何下载并使用Memory Analyzer (MAT)
java·jvm
华仔啊44 分钟前
Java 开发必看:什么时候用 for,什么时候用 Stream?
java·后端
tgethe1 小时前
Java 数组(Array)笔记:从语法到 JVM 内核
java·数据结构