① 枚举是JDK1.5中的新功能,我们可以使用枚举很好的去描述一些业务场景:一年有四季、人类有男女...
② 同样我们在业务层面会有很多,比如状态属性、分类属性等等,我们可以把他们放在数据库里面以达到动态读取的效果。
在我的程序中有很多是、否属性的字段。为了较好地解决这个业务场景我使用枚举进行了属性值得记录,同时枚举和MyBatisPlus结合,使得开发效率也有小小的提升。
因为是与MybatisPlus整合,所以要在yml文件中配置枚举类的扫描包
# mybatisPlus
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;
/**
* @author XA
* date 2021/3/19 16:04
* description: “是否”枚举类
*/
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;
}
}
import com.bh.openapi.commons.enums.TureOrFalseEnum;
import lombok.Data;
@Data
public class TestDTO {
/**
* 是否删除
*/
private TureOrFalseEnum deleted;
}
① 我们在写入数据时字段属性为1
② 我们在进行数据查询时,deleted属性返回的是中文描述:是
如果你不配置枚举扫描包,会导致在进行数据查询后无法做对应的数据类型转换。
枚举类中的key使用 @EnumValue
枚举类中的属性描述使用 @JsonValue
POJO类中要修改属性的类型为你所需要的对应的枚举。