欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

wGenerator代码生成工具

程序员文章站 2022-04-09 10:07:25
由来 以前一直用window系列的操作系统,有不少可以用的代码生成工具,如:动软的代码生成器(.net),可以自定义模板,然后按需生成代码。后来用mac系统,发现好像没有什么太好用的生成工具,所以自己写个吧!!! 我始终认为,工具就是工具,还没有达到可以替代人脑编程的地步,工具只是一个加速器,还是需 ......

由来

以前一直用window系列的操作系统,有不少可以用的代码生成工具,如:动软的代码生成器(.net),可以自定义模板,然后按需生成代码。后来用mac系统,发现好像没有什么太好用的生成工具,所以自己写个吧!!!

我始终认为,工具就是工具,还没有达到可以替代人脑编程的地步,工具只是一个加速器,还是需要自己修剪枝蔓,才能打造好的代码!

这就是wgenerator的由来!!之所以叫wgenerator,是取了我姓的首字母。

特点

小巧灵活——您可以随心所欲的编写模板,模板语法简单,然后去生成!

随心而为——完全根据项目与个人喜好,*发挥!

解放时间——不必再手工敲一些固有的代码,如:entity之类的,节省下来的时间,去理清逻辑重点,哪怕是抽个时间画个手稿流程图,也会让你思路清晰,变成省力!

缺点

无法做到一键生成解决方案,还需要去建文件,copy代码,修饰代码,工具能给你的就是加快了速度,规范了格式!

数据库支持

序号 名称 支持
1 mysql y
2 db2 y
3 sqlserver y
4 oracle y
5 sqlite y
6 postgresql y

如何使用

只需要3步,没错就是3步。

  • copy一个建表语句

  • 选择一个模板

  • 点击生成,就可以copy代码了

模板示例

以java中的entity实体类来做展示:

//$!table.comment
public class $!table.classname implements serializable{
    
    #foreach($!tc in $!columns)
    private $!tc.dltype $!tc.dlentity; //$!tc.comment
    #end
    
    #foreach($!tc in $!columns)
    public void set$!tc.dlmethod ($!tc.dltype $!tc.dlentity){
        this.$!tc.dlentity = $!tc.dlentity;
    }
    public $!tc.dltype get$!tc.dlmethod (){
        return this.$!tc.dlentity;
    }
    #end
}

生成后的代码

//参数配置 
public class adconfig implements serializable{
    
    private string code; //配置编号
    private string name; //配置名称
    private string value; //值
    private string remark; //说明
        
    public void setcode (string code){
        this.code = code;
    }
    public string getcode (){
        return this.code;
    }
        public void setname (string name){
        this.name = name;
    }
    public string getname (){
        return this.name;
    }
        public void setvalue (string value){
        this.value = value;
    }
    public string getvalue (){
        return this.value;
    }
    public void setremark (string remark){
        this.remark = remark;
    }
    public string getremark (){
        return this.remark;
    }
}

模板中的公有参数说明

序号 参数 名称 velocity中调用
1 table 表(对象) $!{table.tablename}
2 columns 列(列表) #foreach($!tc in $!columns)
$!tc.dltype
#end
3 now 时间(字符串)格式:yyyy-mm-dd hh:mm:ss $!{now}
4 author 开发者(字符串) $!{author}
5 dbname 数据库名(字符串) $!{dbname}
table 对象包含字段说明
序号 字段 类型 说明
1 tablename string 表名称
2 autoincrement integer 是否自增
3 tablecollation string 字符顺序
4 comment string 备注
5 classname string 对应的类名称
规范:首字母大写,如果表名师 aaa_bbb_cc 格式,将会被对应为: aaabbbcc
6 classentity string 对应的类实体
规范:首字母小写,把classname组成的值,首字母小写,来对应实例化操作
根据上面的例子,应为: aaabbbcc
7 columns list 列集合;在单个代码生成时,这个没有值
column 对象包含字段说明
序号 字段 类型 说明
1 tablename string 表名
2 name string 列名
3 position integer 顺序位置
4 columndefault string 默认值
5 isnull string 是否为空
6 comment string 备注
7 datatype string 数据类型
8 columntype string 字段类型
9 key string 主键,外键,索引等
10 extra string 扩展:是否自增
11 dltype string 动态语言中的类型
12 dlentity string 动态语言中的实体
13 dlmethod string 动态语言中的set.get方法跟的
14 control string 特殊字段的表单控件名:
checkbox,select,radio
15 dicts list 特殊字段的备选值:key,value访问
用于生成的时候自动生成对应的控件
16 jdbctype string mybatis中可能会用到

如何自己写模板

特殊字段规范
##请在数据库建表的时候,备注一栏按此格式去编写,将会被识别
##[p1]=[字段的说明,如:行状态]
##[p2]=[表单控件,支持: checkbox,select,radio]
##[p3]=[备选值:kv模式,末尾的;不能去掉]
[字段说明123][checkbox][k1=v1;k2=v2;k3=v3;]
vtl语法说明
//工具投射过来的变量访问
//访问变量采用 $!{var} $!var 的格式 ,建议采用带{}的访问方式 
$!{table.tablename}  //页面上会输出 ad_config

//设置一个变量
#set($var1="123")

//输出一个变量
$!{var1}   //将会输出 123

//vtl中的注释写法
#**这中间的文字是被注释的哦,适用于多行注释**#
##我也备注是了,不会被输出,适用于单行注释

//如何循环
//默认的循环次数的引用变量名为$velocitycount
#foreach($!tc in $!columns)
    //循环里给变量设置值
    #set($var1=$var1+","+$tc.dlentity)
    #if("pri"=="$!tc.key")
         #set($firstcolumn = $!{tc.name.tolowercase()} )
    #end
    //输出字段的备注
    $!{tc.comment}
#end

//如何判定
#if(""=="$!var1")
直接输出我把
#elseif("123"=="$!var1")
输出123
#else
我不知道了
#end

vtl保留字输出替代方案

如果在编写模板的时候,需要输出vtl的保留字,请将变量定义为以下格式,程序将会自动转换
暂时支持这3个,后期发现再加:
[#] => #
[$] => $
[!] => !

注册

wGenerator代码生成工具

为了节省您的时间,简化填写步骤。您只需要扫描下方二维码就可以完成注册了。