背景说明
我们程序中经常将一些状态值归类成枚举类,并不想在XML中将枚举值写死,于是出现了这篇文章,参考了很多文章,找到一种最简单的方式,记录下来,与君分享。
枚举类
package com.test.constant;
public enum AnimalEnum {
DOG("dog"),
CAT("cat"),
private String type;
AnimalEnum(String type) {
this.type= type;
}
public String type() {
return this.type;
}
public static boolean isDog(String type) {
return DOG.type().equals(type);
}
}
使用场景
场景一:在mapper文件中,想判断一个参数的值是否跟 AnimalEnum.DOG的值是否一致
<if test="!@com.test.constant.AnimalEnum@isDog(type)" >
AND p.animal_type=#{type}
</if>
场景二:在mapper文件中,根据不同的type,查询不同的字段
SELECT PK_ID,
(CASE WHEN '${type}' = '${@com.test.constant.AnimalEnum@DOG.type()}'
THEN ANIMAL_EN_NAME
ELSE ANIMAL_CN_NAME
END
FROM TEST_TABLE