0
点赞
收藏
分享

微信扫一扫

枚举根据参数获取值

天悦哥 2022-09-05 阅读 241


问题背景

业务中经常会遇到固定业务类型,数据库中常常以数值依次标识其含义 0-女 1-男

主体思路:

定义枚举》获取枚举中得值组成map生成bean》通过上下文获取bean获取对应的值

枚举

import lombok.Getter;
import lombok.Setter;

/**
* @author Xuewei.Zhang
* @date 2022/7/5
*/
public enum FlowEnum {

ORDER(0, "订单"),
PROCUREMENT(1, "采购"),
PRODUCTION(2, "生产"),
REIMBURSE(3, "报销"),
VACATE(4, "请假"),
;

@Getter
@Setter
private Integer code;

@Getter
@Setter
private String msg;

FlowEnum(Integer code, String msg) {
this.code = code;
this.msg = msg;
}

}

组装bean

import com.zxw.common.core.base.enums.FlowEnum;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
* @author Xuewei.Zhang
* @date 2022/7/5
*/
@Configuration
public class FlowBean {

@Bean("FlowEnumBean")
public Map<String, Integer> FlowEnumBean() {
Map<String, Integer> map = new ConcurrentHashMap<>();
for (FlowEnum flowEnum : FlowEnum.values()) {
map.put(flowEnum.getMsg(), flowEnum.getCode());
}
return map;
}
}

获取对应的值

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Configuration;

import javax.annotation.Resource;
import java.util.Map;

/**
* @author Xuewei.Zhang
* @date 2022/7/5
*/
@Configuration
public class BeanUtils {

private static ApplicationContext applicationContext;

@Resource
public void setApplicationContext(ApplicationContext applicationContext) {
BeanUtils.applicationContext = applicationContext;
}

public static Integer getCodeByServiceName(String serviceName) {
Map<String, Integer> map = (Map<String, Integer>) applicationContext.getBean("FlowEnumBean");
return map.get(serviceName);
}

}

使用

@Override
@InitInsertInfo
public FlowTypeVO add(FlowTypeVO flowTypeVO) {
//使用
flowTypeVO.setServiceType(BeanUtils.getCodeByServiceName(flowTypeVO.getServiceTypeName()));
flowTypeMapper.insert(flowTypeVO);
return flowTypeVO;
}

测试结果:

枚举根据参数获取值_spring

 

举报

相关推荐

0 条评论