如果表中的有些字段值是固定的,这个时候进行使用通用枚举,也就是设置性别的时候,性别的值和内容是固定的,在使用的时候【增删改查】,直接调用枚举类当中的内容就可以实现,相当于是一个常量一样
这个概念是在mybatisplus当中所提及到的
解决了繁琐的配置过程,让mybatis优雅的使用枚举属性
在mybatis-plus版本3.5.2之后就不需要进行配置了,所以仅仅需要做到的是声明一下通用枚举类属性就行
首先先进行创建一下对应的文件
其中主要的内容就是两个注解和一个接口,以及进行使用
在不写上对应注解和实现接口的情况下:
package org.example;
import lombok.Getter;
@Getter
public enum Person {
MAN(0, "男"),
MALE(1, "女");
private int i;
private String display;
Person(int i, String display) {
this.i = i;
this.display = display;
}
}
其中MAN和MALE是常用固定的性别值,其中构造器和get方法是必要的
使用环节:
package org.example;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Student {
private String name;
private Integer age;
//枚举类的类型就是对应的类型
private Person sex;
}
注解的使用方法:
注解总共是有两个,一个是@EnumValue注解,这个注解是用来标记数据库存储的值,一个是@JsonValue注解,这个注解是放在需要前端展示的属性上添加【其中@JsonValue注解是需要在有jsckson依赖的情况下进行使用】
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.8.6</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.6</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.8.6</version>
</dependency>
仅仅引入这个依赖之后也是可以实现的
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.6</version>
</dependency>
package org.example;
import com.baomidou.mybatisplus.annotation.EnumValue;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.Getter;
@Getter
public enum SexEnum {
MAN(1, "男"),
MALE(2, "女");
@EnumValue
private Integer value;
@JsonValue
private String display;
SexEnum(Integer value, String display) {
this.value = value;
this.display = display;
}
}
一个接口:
这个接口是IEum<>
package org.example;
import com.baomidou.mybatisplus.annotation.IEnum;
import lombok.Getter;
@Getter
public enum SexEnum implements IEnum<Integer> {
MAN(1, "男"),
MALE(2, "女");
private Integer value;
private String display;
SexEnum(Integer value, String display) {
this.value = value;
this.display = display;
}
}