为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
Spring Cloud

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

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


点击查看更多内容
TA 点赞

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

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消