为了账号安全,请及时绑定邮箱和手机立即绑定
首页 手记 【金秋打卡】第23天 通用代码生成器开发

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

2022.11.15 18:55 55浏览

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


枚举生成器的原理:

    首先要读取已经有的枚举类,利用反射将各个方法读取下,再通过字符串拼装的形式进行组合,最后将拼装好的字符串写入文件中。

https://img3.sycdn.imooc.com/6372e1b90001159d16000873.jpg

核心方法:

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");
}


https://img3.sycdn.imooc.com/6372e1c50001da1e19201050.jpg

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


点击查看更多内容
0人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
手记
粉丝
0
获赞与收藏
6

关注TA,一起探索更多经验知识

同主题相似文章浏览排行榜

风间影月说签约讲师

51篇手记,涉及Java、MySQL、Redis、Spring等方向

进入讨论

Tony Bai 说签约讲师

152篇手记,涉及Go、C、Java、Python等方向

进入讨论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消