数据库有个字段,是状态;之前的做法是:
- 在DAO里申明了一堆的常量(英文的,用于存放入数据库);
- 在bean里写了个方法,将数据库读取的英文,转义为中文,采用switch方法;
- 问题 : 又臭又长 , 又不能很好的遍历常量;
今天采用枚举enum改造了下:
- 自定义一个enum类,类型为中文 + 数字下标;
- 中文用于前端显示,数字下标用于存入数据库;
- 优点 : 易维护,数据库也更清爽了;
自定义枚举类代码大致如下:
package TestEnum;
public enum StatusType {
waitPay("待付款", 1), waitDelivery("待发货", 2), waitConfirm("待收货", 3), waitReview("待评价", 4), finish("完成", 5),
delete("刪除", 6);
private String name; // 对应String的"代付款";
private int index; // 对应int的"1";
// 构造方法
private StatusType(String name, int index) {
this.name = name;
this.index = index;
}
// 根据indx获取name;
public static String getName(int index) {
for (StatusType type : StatusType.values()) {
if (type.getIndex() == index) {
return type.name;
}
}
return "未知";
}
// 根据name获取index
public static int getIndex(String name) {
for (StatusType type : StatusType.values()) {
if (type.getName().equals(name)) {
return type.index;
}
}
return -1;
}
// 判断name是否存在的方法;
public static boolean isExist(String name) {
if (null != name)
for (StatusType type : StatusType.values()) {
if (type.getName().equals(name)) {
return true;
}
}
return false;
}
// 判断index是否存在的方法;
public static boolean isExist(int index) {
if (-1 != index)
for (StatusType type : StatusType.values()) {
if (index == type.getIndex()) {
return true;
}
}
return false;
}
// get和set
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public static void main(String[] args) {
System.out.println(StatusType.getName(1));// 待付款
System.out.println(StatusType.getName(10));// 未知
// System.out.println(StatusType.getName(null));// 编译时错误,int类型不能为null
System.out.println();
System.out.println(StatusType.getIndex("待收货")); // 3
System.out.println(StatusType.getIndex("未知")); // -1
System.out.println(StatusType.getIndex(null)); // -1,不会抛异常;
System.out.println();
System.out.println(StatusType.isExist("jiup"));// false
System.out.println(StatusType.isExist(null));// false
System.out.println(StatusType.isExist(100));// false
System.out.println(StatusType.isExist(-1));// false
// System.out.println(StatusType.waitConfirm.index); // 3
// System.out.println(StatusType.waitConfirm.name); // 待收货
StatusType st = StatusType.valueOf("delete");
System.out.println(st.name); // 刪除
System.out.println(st.index); // 6
}
}