(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

具体的业务代码:总结:

相关推荐
音符犹如代码20 分钟前
Java并发List实战:CopyOnWriteArrayList原理与ArrayList常见面试题
java·开发语言·面试·list
代码or搬砖26 分钟前
Docker 部署 Java 项目实践
java·docker·容器
又是忙碌的一天32 分钟前
抽象类和接口
java·开发语言
August_._39 分钟前
【MySQL】SQL语法详细总结
java·数据库·后端·sql·mysql·oracle
Dxxyyyy1 小时前
零基础学JAVA--Day26(枚举类)
java·开发语言
黑屋里的马1 小时前
java的设计模式之桥接模式(Bridge)
java·算法·桥接模式
升鲜宝供应链及收银系统源代码服务1 小时前
升鲜宝生鲜配送供应链管理系统---PMS--商品品牌多语言存储与 Redis 缓存同步实现
java·开发语言·数据库·redis·缓存·开源·供应链系统
知兀1 小时前
【Spring/SpringBoot】<dependencyManagement> + import 导入能继承父maven项目的所有依赖,类似parent
spring boot·spring·maven
练习时长一年1 小时前
Spring AoP的切点匹配
java·开发语言
27669582921 小时前
朴朴超市小程序分析
java·python·小程序·node·sign·朴朴超市·sign-v2