zoukankan      html  css  js  c++  java
  • 代码生成器原理

    今天突然想玩玩这个。。搞搞代码生成器,今天把原理发出来。。写好Demo陆续更新

    整个架设思路分的4个部分:
    A:底层物理数据库层,主要是存储数据用的。
    B:数据库访问层,主要是为了写一套代码可以跑在多种数据库上。
    C:一些辅助工具、基础组件,是为了加强自动产生代码的功能、简化代码复杂性,进行合理的分工协作用的。
    D:自动生成的代码部分,用PowerDesigner设计简洁明了、易于沟通理解,代码分自动生成及人工部分,为了重复生成方便。

    详细功能部分只要是分12个部分来讲解,分别如下:
    01:我业务里需要的表,是自己的业务里建立的,不大可能有个万能的表,能把所有的业务都能覆盖了。
    02:这是系统里通用的一些表,例如序号生成器表、记录当前的序号使用情况,有点儿像Oracle的序列。
    03:这个是一个数据库访问层的基础类,其他几个类都继承了这个类,在这个类的基础上进行个性化扩展,重复的代码会少一些。
    04:为了实现不同数据库的个性化功能,每个具体数据库采用了个性化的实现,例如获取当前时间,各种数据库都有些不一样。
    05:常用的数据库操作,都封装在这个类里了,其实我们天天在做的就是添加、删除、修改、查询而已,没啥了不起的。
    06:这个是我的基类,里面有很多功能都封装好了,别的类继承一下,就会有很多功能自动就有了,不用所有的代码都要生成,共性的代码,基础类里写就可以了。
    07:SQL语句人工写太烦恼了,就算用生成器写也不太好,数据库表名字段名经常若有变动,程序改来改去很烦恼,而且测试也不太好测试,用生成器的好处就是在在编译阶段发现错误,将错误扼杀在编译阶段。
    08:是我的序号生成器、排序码生成器,数据都需要排序功能的,先输入的数据排在前面?还是后输入的数据排在前面?还是我人工需要干预数据的排序顺序?有生成器生成排序码、然后接着想怎么处理都方便了,可以满足个性化的数据排序需要了。
    09:PowerDesigner是非常优秀的数据表结构设计工具,可以设计多种数据库的表结构,也算是业界的一个标准一样了,我们的代码生成器直接能读懂你的设计文档,也挺有意思的,比读取数据里的表感觉档次高一些,毕竟我们是专业的IT软件人员嘛。
    10:这是自己写的代码生成器,很简单,很原始,自己想怎么修改就怎么修改,生成的代码,还有注释呢,你自己想扩展也可以的,总共也就1000行代码而已,读几次就全明白了。
    11:这里是代码生成器目前可以生成的代码,以后精力充沛了,可以把页面的代码页生成生成,服务层的代码也可以生成,就看有没有时间去折腾了,或者页面层、服务层的代码通过复制粘贴标准例子程序来搞定,也很方便的,未必代码生成器就强多少。
    12:个性化的业务逻辑还是需要自己写sql语句实现,这时候代码就不要放在一起,我设计变了,整个代码可以重新生成,但是别覆盖我人工写的代码部分,这部分被覆盖了,损失还是很惨重的了,不能因为设计变了,重新生成了代码,自己辛苦写的程序都丢了吧。

  • 相关阅读:
    15. DML, DDL, LOGON 触发器
    5. 跟踪标记 (Trace Flag) 834, 845 对内存页行为的影响
    4. 跟踪标记 (Trace Flag) 610 对索引组织表(IOT)最小化日志
    14. 类似正则表达式的字符处理问题
    01. SELECT显示和PRINT打印超长的字符
    3. 跟踪标记 (Trace Flag) 1204, 1222 抓取死锁信息
    2. 跟踪标记 (Trace Flag) 3604, 3605 输出DBCC命令结果
    1. 跟踪标记 (Trace Flag) 1117, 1118 文件增长及空间分配方式
    0. 跟踪标记 (Trace Flag) 简介
    SpringBoot + Redis + Shiro 实现权限管理(转)
  • 原文地址:https://www.cnblogs.com/jgig11/p/4283016.html
Copyright © 2011-2022 走看看