mybatis判断使用枚举值

2018-03-21  本文已影响0人  毛仑上保罗先生

其实有人说这样有点多余了, 明明可以直接把值写死啊,比如:

<select id="getCityCodes">
  <if test="isInternational==0"></if>
</select

直接把值写成0就好了, 是的, 确实可以这样,但是这样的话谁会知道0是什么呢? 当然可以去文档或者别的地方查也许能得到答案, 但是基于个人在以前项目中出现过把值写死连文档都找不到注释没有的情况, 所以现在个人比较倾向于把值写死的情况都用枚举来代替,

/**
 * 是否国际枚举
 */
public enum InternationalEnumUtil {
    ALL(0, "全部"), YES(1, "是"), NO(2, "否");
    private int v;
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getV() {
        return v;
    }

    public void setV(int v) {
        this.v = v;
    }

    private InternationalEnumUtil(int v,String name){
        this.v=v;
        this.name=name;
    }
    public static boolean isEquals(String enumName, int code) {
        return InternationalEnumUtil.valueOf(enumName).getV() == code;
    }
}

在枚举类的最下面我自己写了一个isEquals方法,然后在mybatis的xml中就调用这个类

<if test="not @xxxClass.InternationalEnumUtil@isEquals('ALL',isInternational)">
</if>

这样就能直接判断了 ,not可以用 ! 代替 其效果和下列代码一样

<if test="isInternational !=0">
</if>

这样确实是麻烦些, 但是对于项目维护个人认为意义极大

上一篇下一篇

猜你喜欢

热点阅读