一、前言
1.1、关于枚举类
① 枚举是JDK1.5中的新功能,我们可以使用枚举很好的去描述一些业务场景:一年有四季、人类有男女...
② 同样我们在业务层面会有很多,比如状态属性、分类属性等等,我们可以把他们放在数据库里面以达到动态读取的效果。
1.2、我的枚举使用场景
在我的程序中有很多是、否属性的字段。为了较好的解决这个业务场景我使用枚举进行了属性值的记录,同时
枚举和mybatisPlus结合,使得开发效率也有小小的提升。
二、整合过程
2.1、配置扫描包
因为是与MybatisPlus整合,所以要在yml文件中配置枚举类的扫描包
mybatisPlus
2.2、创建枚举类(以是否XXX属性为例)
mybatis- plus:
mapper- locations: classpath* : / mapper* . xml
# 枚举类扫描
typeEnumsPackage: com. XXX. commons. enums
global- config:
#数据库相关配置
db- config:
#主键类型 AUTO: "数据库ID自增" , INPUT: "用户输入ID" , ID_WORKER: "全局唯一ID (数字类型唯一ID)" , UUID: "全局唯一ID UUID" ;
id- type: AUTO
#字段策略 IGNORED: "忽略判断" , NOT_NULL: "非 NULL 判断" ) , NOT_EMPTY: "非空判断"
field- strategy: NOT_NULL
#驼峰下划线转换
column- underline: true
logic- delete- value: 1
logic- not- delete- value: 0
banner: false
#原生配置
configuration:
log- impl: org. apache. ibatis. logging. stdout. StdOutImpl
map- underscore- to - camel- case : true
cache- enabled: false
call- setters- on- nulls: true
jdbc- type- for - null : 'null'
default - enum - type- handler: org. apache. ibatis. type. EnumOrdinalTypeHandler
import com. baomidou. mybatisplus. annotation. EnumValue ;
import com. fasterxml. jackson. annotation. JsonValue ;
public enum TureOrFalseEnum {
STATE_1 ( 0 , "否" ) ,
STATE_2 ( 1 , "是" ) , ;
TureOrFalseEnum ( Integer key, String value) {
this . value = value;
this . key = key;
}
@EnumValue
private Integer key;
@JsonValue
private String value;
public Integer getKey ( ) {
return key;
}
public String getValue ( ) {
return value;
}
public static String getValueBykey ( Integer key) {
TureOrFalseEnum [ ] applicationStateEnums = values ( ) ;
for ( TureOrFalseEnum itemEnum : applicationStateEnums) {
if ( itemEnum. key. equals ( key) ) {
return itemEnum. getValue ( ) ;
}
}
return null ;
}
public static Integer getKeyByValue ( String value) {
for ( TureOrFalseEnum itemEnum : TureOrFalseEnum . values ( ) ) {
if ( value. equals ( itemEnum. getValue ( ) ) ) {
return itemEnum. getKey ( ) ;
}
}
return null ;
}
}
2.3、实体类中设置类型为对应的枚举
import com. bh. openapi. commons. enums. TureOrFalseEnum ;
import lombok. Data ;
@Data
public class TestDTO {
private TureOrFalseEnum deleted;
}
2.4、达到效果
① 我们在写入数据时字段属性为1
② 我们在进行数据查询时,deleted属性返回的是中文描述:是
三、注意事项
3.1、配置枚举扫描
如果你不配置枚举扫描包,会导致在进行数据查询后无法做对应的数据类型转换。
3.2、枚举类的属性值注解
枚举类中的key使用 @EnumValue
枚举类中的属性描述使用 @JsonValue
3.3、模型层属性类型
POJO类中要修改属性的类型为你所需要的对应的枚举。