wGenerator代码生成工具
由来
以前一直用window系列的操作系统,有不少可以用的代码生成工具,如:动软的代码生成器(.net),可以自定义模板,然后按需生成代码。后来用mac系统,发现好像没有什么太好用的生成工具,所以自己写个吧!!!
我始终认为,工具就是工具,还没有达到可以替代人脑编程的地步,工具只是一个加速器,还是需要自己修剪枝蔓,才能打造好的代码!
这就是wGenerator的由来!!之所以叫wGenerator,是取了我姓的首字母。
http://wgenerator.51dmai.com
特点
小巧灵活——您可以随心所欲的编写模板,模板语法简单,然后去生成!
随心而为——完全根据项目与个人喜好,自由发挥!
解放时间——不必再手工敲一些固有的代码,如: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代码生成工具的更多相关文章
- Map工具系列-01-Map代码生成工具说明
所有cs端工具集成了一个工具面板 -打开(IE) Map工具系列-01-Map代码生成工具说明 Map工具系列-02-数据迁移工具使用说明 Map工具系列-03-代码生成BySQl工具使用说明 Map ...
- mybatis实战教程(mybatis in action)之九:mybatis 代码生成工具的使用
mybatis 应用程序,需要大量的配置文件,对于一个成百上千的数据库表来说,完全手工配置,这是一个很恐怖的工作量. 所以mybatis 官方也推出了一个mybatis代码生成工具的jar包. 今天花 ...
- 第二章 Mybatis代码生成工具
1.mybatis-generator作用 1).生成pojo 与 数据库结构对应 2).如果有主键,能匹配主键 3).如果没有主键,可以用其他字段去匹配 4).动态select,update,del ...
- 【C#】Excel做的数据表、SQLParameter代码生成工具
转载请注明出处http://www.cnblogs.com/Vulpers/ 做了一个小的代码生成工具,用于新建数据表时能够快速生成一些重复性很高的代码,目前仅支持SqlServer数据库及C#语言, ...
- 代码生成工具Database2Sharp中增加视图的代码生成以及主从表界面生成功能
在代码生成工具的各种功能规划中,我们一向以客户的需求作为驱动,因此也会根据需要增加一些特殊的功能或者处理.在实际的开发中,虽然我们一般以具体的表进行具体业务开发,但是有些客户提出有时候视图开发也是很常 ...
- Web API应用架构在Winform混合框架中的应用(4)--利用代码生成工具快速开发整套应用
前面几篇介绍了Web API的基础信息,以及如何基于混合框架的方式在WInform界面里面整合了Web API的接入方式,虽然我们看似调用过程比较复杂,但是基于整个框架的支持和考虑,我们提供了代码生成 ...
- RUF MVC5 Repositories Framework Generator代码生成工具介绍和使用
RUF MVC5 Repositories Framework Generator代码生成工具介绍和使用 功能介绍 这个项目经过了大半年的持续更新到目前的阶段基本稳定 所有源代码都是开源的,在gith ...
- 利用代码生成工具Database2Sharp设计数据编辑界面
在Winform程序开发中,界面部分的开发工作量一般是比较大的,特别是表的字段数据比较多的情况下,数据编辑界面所需要的繁琐设计和后台逻辑处理工作量更是直线上升,而且稍不注意,可能很多处理有重复或者错误 ...
- 配置VS代码生成工具ReSharper快捷键
VS代码生成工具ReSharper提供了丰富的快捷键,可以极大地提高你的开发效率.安装ReSharper后首次启动Visual Studio时,会出现一个名为ReSharper Keyboard Sc ...
随机推荐
- httpClient连接超时设置
注: 每个HttpClinet对象设置都不一样 这里已3.x和4.x为例说明 1)3.X版本 创建连接 HttpClient httpClient=new DefaultHttpClient(); 这 ...
- SEO概念及SEO相关优化
SEO是英文Search Engine Optimization的缩写, 中文意译为“搜索引擎优化”. 简单地说, SEO是指从自然搜索结果获得网站流量的技术和过程. http://www.imooc ...
- nginx+php+mysql+wordpress搭建简单站点 安装及配置过程
环境 阿里云ECS云服务器 CPU:1核 内存:2G 操作系统:Centos 7.3 x64 地域:华北 2(华北 2 可用区 A) 系统盘:40G 安装及配置 主要使用 nginx . php 和 ...
- 第七章之S5PV210移植到Nandflash
1,之前的操作都是基于SD卡进行运行的,如今在Nandfalsh中运行u-boot.因为s5p_goni.h配置文件没有配置Nand相关文件,所以先配置Nand文件. 在include/configs ...
- 使用DOS命令关闭tomcat端口(其他服务也是可以的)
废话不多说,直接上步骤: WIN+R 打开DOS窗口 输入netstat -ano|findstr 8080(其中8080是我自己tomcat的端口号) 之后可以看到端口号的最后会有数字,这个数字是端 ...
- 3个简单CSS实现的动态效果
这里只是鼠标移入的时候出现的动态效果,并没有使用CSS的动画属性animation和变形属性transform.后面再补... HTML代码如下: <!DOCTYPE html><h ...
- JVM配置参数详解(目前不够完善)
最近看了有关虚拟机的书籍,发现有很多虚拟机配置参数不知道,特来记录一下, -XX: MaxDirectMemorySize--->设置直接内存,不设置与Java堆内存最大值一致 -XX:Perm ...
- PAT1116: Come on! Let's C
1116. Come on! Let's C (20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue &quo ...
- FPGA学习笔记(三)—— 数字逻辑设计基础(抽象的艺术)
FPGA设计的是数字逻辑,在开始用HDL设计之前,需要先了解一下基本的数字逻辑设计-- 一门抽象的艺术. 现实世界是一个模拟的世界,有很多模拟量,比如温度,声音······都是模拟信号,通过对模拟信号 ...
- Python中标准模块importlib详解
1 模块简介 Python提供了importlib包作为标准库的一部分.目的就是提供Python中import语句的实现(以及__import__函数).另外,importlib允许程序员创建他们自定 ...