Mybatis Plug枚举使用(@EnumValue、@JsonValue)
注解说明:
①、@EnumValue:存储数据库的属性
②、@JsonValue:返回前端界面的属性
注意:
枚举字段最好不要存tinyint(1)否则在被mybatis plug转化中,会被变为Boolean导致查询不到结果,可以存tinyint(4),以避免这个问题。
tinyint(1)和tinyint(4)在存储上都是占用一个字节,通常使用tinyint(1)存取Boolean值,使用tinyint(4)存储数字格式的数据。
1、映入mybatis plug的maven坐标
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
2、yml配置文件扫描
mybatis-plus:
global-config:
db-config:
logic-delete-field: deleted #全局逻辑删除字段值 3.3.0开始支持
logic-delete-value: 1 # 逻辑已删除值(默认为 1)
logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
id-type: auto # 主键自增
type-enums-package: com.cfay.**.common.enums # 配置枚举扫描包
3、编写枚举类
- 方式一:
package com.cfay.journal.common.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.Getter;
/**
* @Author lcb
* @Date 2022/07/26
**/
@Getter
public enum EnableEnums {
SEQUENTIAL_TEST(3, "顺序测试"),
DISABLED(0, "禁用"),
ENABLE(1, "启用"),
INIT(2, "初始状态");
EnableEnums(final Integer code, final String message) {
this.code = code;
this.message = message;
}
@EnumValue
private final Integer code;
@JsonValue
private final String message;
}
- 方式二:
package com.cfay.journal.common.enums;
import com.baomidou.mybatisplus.annotation.IEnum;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.Getter;
/**
* @Author lcb
* @Date 2022/07/26
**/
@Getter
public enum EnableEnums implements IEnum<Integer>{
SEQUENTIAL_TEST(3, "顺序测试"),
DISABLED(0, "禁用"),
ENABLE(1, "启用"),
INIT(2, "初始状态");
EnableEnums(final Integer code, final String message) {
this.code = code;
this.message = message;
}
private final Integer code;
@JsonValue
private final String message;
@Override
public Integer getValue() {
return this.code;
}
}
4、测试说明
推荐:当status传枚举对应的字段,数据库保存的是枚举对应的code,比如:启用或禁用,如下图
不推荐:当status传0-3或"0"-"3"的情况下,数据库保存的值是对应枚举类的位置字段值,如下图