枚举类的优雅使用

 1.枚举类优雅写法

@AllArgsConstructor
@Getter
public enum TypeEnum {

    DL( "0", "类别1"),
    ZT( "1", "类别2");

    private final String type;
    private final String description;

    private static Map<String, TypeEnum > cache;

    static {
        cache = Arrays.stream(TypeEnum .values()).collect(Collectors.toMap(TypeEnum ::getType, Function.identity()));
    }

    public static TypeEnum of(String type) {
        return cache.get(type);
    }

    /**
     * 获取枚举类List<Enum>集合
     * @return java.util.List<java.lang.Enum>
     */
    public static List<Enum> getEnumList(){
        // 获取枚举类型的所有值
        Class<? extends Enum> enumClass = TypeEnum .class;
        Enum[] enumValues = enumClass.getEnumConstants();

        // 将枚举值添加到List中
        List<Enum> enumList = new ArrayList<>();
        Collections.addAll(enumList, enumValues);

        return enumList;
    }

}

        当然getEnumList方法和TypeEnum.values()有异曲同工之妙,此处仁者见仁智者见智。

2.请求入参判断是否为枚举类类型

public static void main(String[] args) {
    //检查select类型是否正确
    String selectType = selTabReqVo.getSelectType();
    if (Arrays.stream(QueryTypeEnum.values()).noneMatch(logistics -> logistics.getType().equals(selectType))) {
        throw new IllegalArgumentException("请提供正确的selectType类型!");
    }
}

3.根据参数类型获取对应的枚举类

   public QueryTypeEnumisHotRoom() {
        return QueryTypeEnum.of(this.hotFlag);
    }

4、SQL条件判断是否为枚举类类型

<select id="getChudanNo" resultType="org.entity.vo.resp.ChudanRespVo">
    SELECT  distrJobno,
        chudanNo
    FROM   op WITH(nolock)
<where>
    <if test="distrJobno !=null and distrJobno!='' ">
        distrJobno = #{distrJobno}
    </if>
    <include refid="dl"/>
</where>
</select>

<sql id="dl">
    <if test="selectType!=null and selectType.trim()!='' and @org.enums.QueryTypeEnum@DL.getType == selectType">
        AND (policyState = 0 OR policyState = 1 OR policyState = 2 )
    </if>
</sql>

重点:@org.enums.QueryTypeEnum@DL.getType == selectType

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值