AutoScript 代码生成Saas 创建模版手册
前言
为了满足用户自定义代码模版需求,特意编写该手册,方便用户使用AutoScript 工具来快速配置模版。
该工具基于FreeMarker 技术,如果首次接触,可以先了解附录的FreeMarker语法,以便迅速地编写模版。某些功能FreeMarker不能很好支持,需要平台自定义一些函数来补充完善代码生成需要。
模版工程,工程参数,模版关系如下图:
一个模版工程只需定义一组工程参数,可以若干个模版,一个模版通常对应一组文件
本人也是做开发多年,深感IT民工“搬砖”辛苦,想想如何减轻天下开发人员工作量负担,酝酿良久。多版改造,终于出一版BS结构代码生成器!我知道任何系统都不是完美,必经迭代改造,希望用户使用过程中,多提宝贵意见,逐步完善该工具。实现初心:让天下程序员脱离繁复工作!能按点上下班,多抽出时间陪伴家人,保养好身体,为社会做出更大贡献。
系统特点
ü 该系统只是提供模版配置,所以它具有平台无关性,语言无关性。能生成任何平台,任何框架,任何语言代码及相关配置
ü 一键生成,支持批量生成;一个功能生成一般都是秒级生成,一个项目一次生成也是分钟级别而已!
ü 支持从设计到代码,一气呵成!目前设计支持pdm格式,如果还有其他,可以提出。应网友要求支持sql表结构导入。
ü BS结构,本地无需任何安装,直接访问云服务器即可。系统升级服务就升级。
ü 支持定制页面,可能有些客户需求不同,比如直接连接云上系统,挂接菜单等。
编写模版次序
1.数据库设计,目前只支持pdm及SQL文件格式
2.根据业务需求,归纳总结系统模版,比如单表,主子表等。
3.根据模版做出比较通用的功能,切勿加有业务的功能,因为生成代码是统一个“模”生成的,必须具有通用性。
4.着手编写模版。编写模版时,通常一个模版功能分为前后端,一般模版也分为前端模版和后端模版。便于开发人员使用。为了加快开发人员入门,本文以生成bean vo 为例子,详细说明如何创建模版。
这个例子熟练后,可以参考代码生成平台的其他工程创建其他模版。
本文以bean:AsKnowledgeBase.java为例,示范如何配置模版
package top.tangyh.lamp.learnpm.entity;
import java.time.LocalDateTime;
/**
* <p>
* 知识库实体类
* </p>
*
* @author lsb
* @date 2022-06-26
*/
@Data
public class AsKnowledgeBase {
private static final long serialVersionUID = 1L;
/**
* 类型
*/
private String kbType;
/**
* 关键字
*/
private String kbKeyword;
/**
* 语法
*/
private String kbGrammar;
/**
* 描述
*/
private String desc;
}
新建工程
在浏览器(推荐用谷歌浏览器)地址栏录入:http://jz-fw.com:8081/,如果地址栏有变化,发邮件及短信通知
首次使用,需要注册用户
填写上面各项,手机号和邮箱为了忘记密码,系统变更时发通知用,不会对外暴露公开,请放心注册。
登陆进去后,点击菜单:模版维护->模版列表
点击新增后,出现如下界面:
工程名称:录入一个有意义的名称,通常为带有业务含义,比如XXX平台单表模版,工程名称不能与系统现有工程名称相同。
字符集:即jdk支持字符集名称。通常为UTF-8
是否选数据源:是否需要上传表结构(pdm文件等),通常用于创建新项目模版。生成功能代码,一般选择是,如图绿色;新建项目,选否,开关往左拨。变红色。
自定义运行页面URL:用于定制生成代码页面,需要联系平台定制,然后才能配进去。
备注:对于工程的普通描述。
填完,点击保存按钮。
配置工程参数
工程参数通常用于配置一些公共参数,比如根包名,作者,根目录,数据源名称等等。需要根据平台框架需要配置。
在工程列表点击六边形图标,进行参数配置,如下图:
点击六边形图标后,进入下图:
点击新增按钮,进入下图:
各项说明如下:
参数类型:是生成代码时,配置工程参数页面参数界面控件是什么类型,通常类型有如下图:
单行输入框,多行输入框(通常说的大文本框),日期,时间,数字输入框,单选框,多选框等
参数标题:在界面控件前面标题,提示界面控件的作用。
宽度:界面控件占用宽度,通常为50%,100%
验证规则:通常填必填验证规则。如果该参数不是必填,可以为空
选择内容:用于下拉框选择,下拉框有那些选项
参数名:这个非常重要,用于模版中如何得到参数输入的值,就是靠这个参数名来获取。同一个模版工程中,参数名唯一。
占位符:就是提示使用者文本,比如请输入xxxx之类
最大长度:指定参数能录入的最大长度
CS风格:目前尚不支持
初始化值:就是参数默认值
最大值:用于数字输入框的最大值
最小值:用于数字输入框的最小值
小数位:用于数字输入框的能录入小数位数
步长:目前尚未支持
最大行数:用于多行输入框的最多输入行数
最小行数:用于多行输入框的最小输入行数
初始行数:用于多行输入框的初始行数(一开始就显示有多少行)
初始列数:用于多行输入框的初始列数(一开始就显示有多少列)
下面以单行输入框和下拉框为例子
单行输入框:
下拉框:
选择内容截图看不全,下面复制出文本:
[{“value”:“DsConstant.DEFAULTS”,“label”:“缺省数据源”},{“value”:“DsConstant.BASE_TENANT”,“label”:“动态租户base库”}, {“value”:“DsConstant.EXTEND_TENANT”,“label”:“动态租户extend库”}]
它是一个JSON数组,每一项都包含value,label,其他label为显示名称,value为对应值
有多少项,就构造多少个{}
我们观察一下demo的Bean,会发现文件根位置,根包名和作者是可以提取成参数,如下图:
我们创建三个输入框的参数即可,如下图:
【注意】:目录必须以/作为文件分隔符
--------------------------------根包名参数--------------------------
--------------------------------作者--------------------------
全部录入完,如下图:
新建模版
配置完模版后,可以正式进入编制模版阶段了,点击如下按钮:
点击上图图标,进入模版维护列表
点击新增,进入模版编辑界面
模版名称可以任意起,同一个模版工程里不能重复,这个例子我们可以起bean作为模版名称;后面到关键模版内容配置地方,在开始配置之前,先观察实际的bean内容,如下图:
可以看到需要两层循环才能完成bean vo生成
循环一个表写法如下:
<#list rootnode.getChildNodesByPath(“Table”) as tableNode>
</#list>
<#list …> 表示循环开始
</#list> 表示循环结束
循环一个表字段写法如下:
<#list tableNode.getChildNodesByPath(“Column”) as columnNode>
</#list>
循环问题搞掂后,还有一些细节入下图:
上图还漏了,创建文件及根包名
取出表中文名写法:
${
tableNode.getAttributeVal("name")}
取作者写法:
${
author}
author是配置工程参数的参数名
取当前时间写法:
${
currentdate("yyyy-MM-dd")}
Yyyy-MM-dd 是日期格式
表名转换为类名是一个宏,调用如下:
<#assign tablenametrimmodule><@getTableName tableName='${
tableNode.getAttributeVal("code")}' />
字段名转属性,字段类型转java类型都是宏,在下面的模版内容逐一标出
取字段中文名写法:
${
columnNode.getAttributeVal("name")}
创建文件写法
@{
createTextFile("xxx",false)}
文件内容
@