亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

【金秋打卡】第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下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消