文章目录
前言
状态映射关系太多?使用枚举变量,映射关系交给spring自动维护!!!告别烦恼!!!
一、环境
1、SpringBoot 版本
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
2、Mybatis Plus 3.1及以上版本
<!-- mybatis plus 3.1 以上版本 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
二、代码
步骤一:配置Mybatis Plus枚举
方式一: 配置MybatisPlusAutoConfiguration
@Configuration
public class MybatisPlusAutoConfiguration {
/**
* 配置Mybatis枚举
* @return
*/
@Bean
public MybatisPlusPropertiesCustomizer mybatisPlusPropertiesCustomizer() {
return properties -> {
MybatisConfiguration configuration = new MybatisConfiguration();
configuration.setDefaultEnumTypeHandler(MybatisEnumTypeHandler.class); // 枚举处理类
properties.setConfiguration(configuration);
};
}
}
方式二: 配置.yml文件
// 配置枚举处理类
mybatis-plus:
configuration:
default-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler
步骤二:配置枚举类
方式一: 枚举属性,实现 IEnum,重写getValue()
@Getter
public enum GradeEnum implements IEnum<String> {
PRIMARY(1, "小学"),
SECONDARY(2, "中学"),
HIGH(3, "高中");
private final Integer code;
private final String des;
GradeEnum(Integer code, String des) {
this.code = code;
this.des = des;
}
@Override // 数据库存储的值
public String getValue() {
return this.des;
}
}
方式二:使用 @EnumValue 注解枚举属性
@Getter
public enum GradeEnum {
PRIMARY(1, "小学"),
SECONDARY(2, "中学"),
HIGH(3, "高中");
private final Integer code;
@EnumValue // 数据库存储的值
private final String des;
GradeEnum(Integer code, String des) {
this.code = code;
this.des = des;
}
}
步骤三:实体中使用Enum
@Data
@TableName("student")
public class Student implements Serializable {
private static final long serialVersionUID = 7011752983426204134L;
@TableId(type = IdType.AUTO)
private Integer id;
private String name;
private String sex;
// 枚举
private GradeEnum grade;
}
三、测试及结果
1、测试
@Test
void student(){
Student student = new Student();
student.setGrade(GradeEnum.HIGH);
studentService.save(student);
List<Student> students = studentService.list();
System.out.println(students);
}