上一篇说了常规功能(参见《EZDML常规功能》),这篇接着说特色功能。
特色功能就是我有别人没有的,或者一开始只较少人有(嗯,功能好用的话,迟早会被别人抄过去的,我也经常抄人家的)。下面开始表演。
物理+逻辑视图
就是同时显示物理名称和逻辑名称。
记得以前用其它建模工具时,我就很希望有这么个功能,因为我英文不好,非常需要同时看到中文。十几年前的建模工具几乎都是英文版,老外是不需要这功能的(因为他们英文好啊)。然后自己来写EZDML了,差不多就第一时间把这个功能加上了。
中英文直接对照,感觉好多了。
缩略图
按下F8切换到缩略图,表太多看不过来的时候,缩略图能让你神清气爽。
描述字建表
强烈推荐使用。新建表时,在描述字上输入以下内容:
1 | TestTb 测试表 |
就可以得到一个表对象:
修改表时也可以在描述字上做操作,如批量删除、批量移动、批量改注释。不过描述字不适合改字段名,因为EZDML需要按名称匹配字段,改字段名还是到表格那边去处理。
关于EZDML的字段类型可参考这里。
自动生成关系图
这个是新鲜出炉的功能。很久以来我都有想如何在EZDML里展现一个表的引用关系,因为关联关系是数据建模中极其重要的一环,后来终于想到,可以在表属性里加一个小关系图,把跟这个表相关的所有对象放一起做个小模型图:
这个模型图以当前表为核心呈星形展开,仍然是能做各种操作的,拖动、平移、缩放、选择、复制、导出等。比如模型图默认是缩略图,按F8或点工具栏按钮可切换成全图:
双击模型图的对象,可以弹出其属性:
然后里面的关系图可以继续双击查看。嗯,你可以一直这样玩下去。
查看表数据
查看表属性时,可同时查看表数据,以便维护比对和加深对数据设计的理解。
表数据页默认是隐藏了,需要右键打开或在设置中开启。比如area这个表:
切到“数据”页,可快速预览前25行(前提是已经连上数据库):
从v3.36版起,查询数据时,可以查询当前记录对应的关联表数据,EZDML会根据关联关系自动生成过滤条件:
点击后会打开一个新窗口,可以看到过滤条件已经拼好了:
然后重点来了,这个窗口里仍然可以右键查询关联记录:
理论上就可以一直玩下去了。
界面原型
EZDML能快速生成列表和表单界面的原型,供开发设计参考。
界面页默认也是隐藏了,需要右键打开或在设置中开启。比如还是area这个表,切到PC电脑界面是这样的:
这个是平板界面:
手机版:
双击可转到查看表单:
点修改进入编辑表单:
界面配置面板中提供了常用的界面属性设置,可多选并进行批量设置:
一些界面控件的展示:
数据生成
提供大量常用的示例数据生成功能:
方便演示和测试:
可设置或添加自己的测试数据集。
文件比对
在生成数据库时,如果不连接真实的数据库,可以在下拉菜单中选择一种数据库类型:
这时生成的是创建数据库的脚本:
如果我们选择最后一项EZDMLFILE:
则会提示用户选择打开一个EZDML模型文件进行对比:
这时再生成SQL,就是两个模型文件对比生成的结果了:
导入pdm
PowerDesigner是数据建模的老大哥了,我相信PD的老用户没什么意外的话一般是不会转用EZDML的。不过可能存在EZDML用户接手PD项目的情况,从数据库逆向导入总是差点意思,因此EZDML还是提供了导入pdm的功能。
需要注意的是,EZDML不像PD一样提供多级分类,因此所有模型图导入后都会放在根目录:
大小写转换
可选择一个或多个表进行大小写、汉字转拼音、驼峰与下划线命名转换等处理:
比如这是驼峰转下划线的:
全部转大写的:
自定义词典
如果表是从数据库导进来的,可能是全大写或全小写的:
这时执行自动大小写,会尝试识别其中的英文单词并转为驼峰命名:
不过,我们发现IsDefault没识别出来,这是因为EZDML自带的词典中没有is和default这两个词。
解决办法是在设置中添加自定义的词条,这里我们只需要把长的词加上:
再次执行自动大小写就可以顺利识别了:
自动布线
拖动关联表对象时,自动寻找合适的布线位置,布线时会尽量绕开表对象:
脚本引擎
EZDML是可简单可复杂。从这里开始的内容就有点复杂,有一些功能可以说是给我自己玩儿的。如果你不是程序员,只是简单地用来建模,可以不必往下看,或稍为了解下就行,不需要太深入。
EZDML支持JavaScript和PascalScript脚本引擎。
脚本是EZDML的一大特色。当然现在来看可能很多类似工具都有脚本了,甚至有些APP都用javascript开发了;但当年没那么流行的时候,我把脚本引擎加到EZDML里时还是小有激动的,感觉程序进入了另一个世界。
脚本引擎对非程序员不太友好,你也可以不用。但当你管理几十上百个表时,你多半会需要脚本的,比如你想要做以下事情时:
- 修改所有表名的前缀
- 给所有CT_开头的表添加UpdateTime时间字段
- 删除所有名称中包含XX的字段
- 把所有CreateDate字段的默认值修改为now
- 为所有CreatorId字段添加索引和备注
- 检查所有CreatorId是否跟用户信息有存在外键关联关系
- …
所有这些,只要写上一点点脚本,遍历一下,稍为判断一下再读写一下,就能解决了。
如果你是程序员,你可能会想用EZDML来生成一些代码,那就可以用上脚本模板了:
这是上述代码生成的结果:
导出EXCEL和WORD文档
先在模型图上选择要导出的对象(不选则默认全部),然后执行主菜单“模型|导出”,可选择导出各种类型:
要注意一点是,导出EXCEL时,字段类型是跟模型图视图有关的,模型图上显示逻辑类型时导出EXCEL字段是逻辑类型(如String);模型图显示物理类型时,导出EXCEL的是物理类型(如varchar)。
导出文档的功能大家都有,不过EZDML的特点是导出文档基本上都是用脚本完成的,如有需要可自行修改Templates目录下的各种导出脚本模板。
如果只是需要图像,可以在模型图上右键菜单“复制图像”然后再到需要的地方粘贴,比如下面这图就是复制粘贴的:
生成接口文档
上面操作导出时,如果选择Markdown,则会生成Markdown类型的接口文档,大概预览结果如下图:
接口说明:
JSON格式结果:
生成代码
表属性切到生成页时,可生成各种代码模板。
生成页默认是隐藏的,需要右键打开或在设置中开启。这个是生成Markdown的:
生成Vue列表的:
生成Springboot JPA实体类的:
生成erupt实体类的:
都是脚本模板生成的,可以修改脚本,生成后拷出来用。
批量生成代码
上面说的是单个表生成。如果想同时生成多个表的,可执行主菜单“模型|生成代码”:
这里模板可以是一个脚本模板文件(需要在Templates/_dml_config.INI中配置),也可以是一个文件夹目录(Templates下的所有子目录都会列出来)。
以上图的layuiAdmin目录为例,这个是layui的一个后台管理模板,执行生成:
完成后会启动一个小HTTP服务:
并打开浏览器,显示layuiAdmin界面:
这个模板同时生成了layui、百度Amis、VueElement、Markdown的内容,有兴趣的可以自己试试:
VueElemeAdmin、SpringJpaSwagger和Erupt模板也是生成整个工程的,生成后可以编译运行,详见相关的博客文章,这里不展开了:
批量生成测试数据Insert语句
EZDML 3.36版起支持生成测试数据的insert语句:
自定义生成sql
EZDML默认会为不同的数据库生成不同的SQL,如果对默认生成的SQL不满意,可以编写脚本接管全局事件,这个功能在主菜单“工具|编辑全局事件脚本”里:
这个脚本目前只支持PASCAL。里面几个方法会在生成SQL时触发调用,脚本注释已经明确说明每个方法的作用,需要时也可以一试。
如果只是对字段类型不满意,可以在设置里配置字段类型替换,EZDML会对字段类型进行查找替换:
自定义属性面板
EZDML可以在表和字段属性中嵌入一个用户自定义界面,这个界面其实是一个脚本模板。首先要在设置中开启自定义属性页:
然后就会在属性页中出现自定义界面:
这页面其实是一段脚本生成的,通过[SettingsPanel]配置界面,再用脚本把界面的内容写到表或字段的customConfigs属性中:
先写到这,其它以后想到再补。