(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

具体的业务代码:总结:

相关推荐
phltxy7 小时前
C语言操作符详解
java·c语言·算法
步行cgn8 小时前
@Configuration 详解:Spring 配置类的核心注解
java·后端·spring
sunshine22 girl8 小时前
Java学习一 环境配置2 安装和基本使用Idea
java·学习·intellij-idea
嘿嘿-669 小时前
Windows 一键使用 GPT-6 Astra:Codex CLI 配置教程
java·人工智能·windows·gpt·chatgpt·web
策案案案11 小时前
YOLO: 将AI Agents嵌入到IntelliJ IDEA
java·大数据·人工智能·笔记·yolo·microsoft·intellij-idea
辰烨chenye12 小时前
LeetCode Hot 100 题解 · 堆篇
java·算法·leetcode
shehuiyuelaiyuehao13 小时前
算法29,前缀和,除自身以外的数组的乘积
java·数据结构·算法
小刘在重生~13 小时前
Java常用类|String类详解 + BigDecimal精准计算(含面试题)
java·开发语言·python
随遇而安zx13 小时前
【多线程】---JMM 与 volatile 深度解析
java·多线程