手记

【金秋打卡】第23天 通用代码生成器开发

课程名称: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");
}


使用枚举生成器可以用来快速为前端生成枚举字段的对应,配合前端已有的过滤器完成数据库枚举字段和前端的结合。


0人推荐
随时随地看视频
慕课网APP