课程名称:Spring Cloud+ Vue前后端分离开发企业级在线视频系统
课程章节:第6章 通用代码生成器开发
讲师姓名:甲蛙老师
课程内容:
开发代码生成器——增加枚举生成器EnumGenerator,生成对象和数组两种形式,和字段一一对应。
课程收获:
在使用枚举生成器之前,首先需要准备一个枚举类,和数据库存储的字段一一对应
public enum YesNoEnum {
YES("1", "是"),
NO("0", "否");
private String code;
private String desc;
YesNoEnum(String code, String desc) {
this.code = code;
this.desc = desc;
}
public String getCode() {
return code;
}
public String getDesc() {
return desc;
}
}
枚举生成器的原理:
首先要读取已经有的枚举类,利用反射将各个方法读取下,再通过字符串拼装的形式进行组合,最后将拼装好的字符串写入文件中。
核心方法:
private static void toJson(Class clazz, String key, StringBuffer bufferObject, StringBuffer bufferArray) throws Exception {
Object[] objects = clazz.getEnumConstants();
Method name = clazz.getMethod("name");
Method getDesc = clazz.getMethod("getDesc");
Method getCode = clazz.getMethod("getCode");
// 生成对象
bufferObject.append(key).append("={");
for (int i = 0; i < objects.length; i++) {
Object obj = objects[i];
if (getCode == null) {
bufferObject.append(name.invoke(obj)).append(":{key:\"").append(name.invoke(obj)).append("\", value:\"").append(getDesc.invoke(obj)).append("\"}");
} else {
bufferObject.append(name.invoke(obj)).append(":{key:\"").append(getCode.invoke(obj)).append("\", value:\"").append(getDesc.invoke(obj)).append("\"}");
}
if (i < objects.length - 1) {
bufferObject.append(",");
}
}
bufferObject.append("};\r\n");
// 生成数组
bufferArray.append(key).append("_ARRAY=[");
for (int i = 0; i < objects.length; i++) {
Object obj = objects[i];
if (getCode == null) {
bufferArray.append("{key:\"").append(name.invoke(obj)).append("\", value:\"").append(getDesc.invoke(obj)).append("\"}");
} else {
bufferArray.append("{key:\"").append(getCode.invoke(obj)).append("\", value:\"").append(getDesc.invoke(obj)).append("\"}");
}
if (i < objects.length - 1) {
bufferArray.append(",");
}
}
bufferArray.append("];\r\n");
}
使用枚举生成器可以用来快速为前端生成枚举字段的对应,配合前端已有的过滤器完成数据库枚举字段和前端的结合。