如何将自定义/默认值设置为来自数据库的值?

时间:2018-10-24 17:59:12

标签: java hibernate spring-boot jpa

如何将自定义/默认值设置为来自数据库的值? 我需要为数据库中的值匹配/设置以下颜色代码值。

**Values from DB**     **Default value**
At Risk -                 Red
On Track -                Green
Needs Attention -         Yellow

请让我知道如何调整下面的代码以获得预期的o / p。

String colorStatus = userObj.setStatus();
            userCodeValue.setStatus(colorStatus);
            /*String yellowColor = "yellow";
            if(colorStatus.equalsIgnoreCase("Need Attention")){
                vlcValue.setStatus(yellowColor);
            }*/

2 个答案:

答案 0 :(得分:1)

您可以使用枚举使映射静态化。第一个元素是获取默认颜色的接口:

public interface ColorMapper {
   Color defaultValue();
}

颜色枚举:

public enum  Color {

   RED, GREEN, YELLOW
}

以及原始值和默认值之间的静态映射:

public enum Status implements ColorMapper {

    AT_RISK("At Risk") {
        @Override
        public Color defaultValue() {
            return Color.RED;
        }
    },
    ON_TRACK("On Track") {
        @Override
        public Color defaultValue() {
            return Color.GREEN;
        }
    },
    NEEDS_ATTENTION("Needs Attention") {
        @Override
        public Color defaultValue() {
            return Color.YELLOW;
        }
    };

    private String code;

    Status(String code) {
        this.code = code;
    }

    public String getCode() {
        return code;
    }
}

此映射是静态的,随时都非常清晰。 另一种选择是创建一个Map<String,String>,在其中保留数据库值和默认值之间的映射:

 @Service
 public class MyService{
     private static final Map<String,String> defaultMappingValues;
     public MyService(){
          defaultMappingValues.put("At Risk", "RED");
          defaultMappingValues.put("On Track", "Green");
          defaultMappingValues.put("Needs Attention","Yellow");
     }

 }

,当您需要At Risk的默认值时,您将致电

defaultMappingValues.get("At Risk");

答案 1 :(得分:0)

// color code functionality to be included
            String colorStatus = vlcObj.getColorStatus();
            vlcValue.setColortStatus(colorStatus);
            String yellowColor = "yellow";
            String greenColor = "green";
            String redColor = "red";

            if(colorStatus.equalsIgnoreCase("NeedsAttention")){
                vlcValue.setColortStatus(yellowColor);
            }
            if(colorStatus.equalsIgnoreCase("AtRisk")){
                vlcValue.setColortStatus(redColor);
            }
            if(colorStatus.equalsIgnoreCase("None")){
                vlcValue.setColortStatus(greenColor);
            }if(colorStatus.equalsIgnoreCase("OnTrack")){
                vlcValue.setColortStatus(greenColor);
            }