相信很多人跟我一样,不喜欢数据展示、列表分页、数据的增、删、改、查,这种简单又烦琐的搬砖活。
因为很多人跟我一样,所以网上出现很多开源的代码生成工具,在多年前我也写过,根据模版生成简单的View、Action、Service、Dao、Bean(现在想来当时真SB,写了个破东西还洋洋得意);但实际上并没有太大变化,代码生成太死板。不是所以表单数据都可以用input[type=‘text‘]来输入的,增删一个字段是要改4人的。
多年以后我尝试用模型驱动开发,基于配置来实现各种各样的功能,控件丰富且一键调用;废话不多说,下面详细介绍
假设需要进行图书管理、图书分类、图书借阅记录;最终要的效果如下图:
数据展示与排版,是不是让人觉得很直观。不同的数据操作,功能键在数据上边。再来看下表单:
这里边有五种控件:单行文本框、多行文本框、日期控件、文件上传控件,还有一个隐藏控件指向图书类型ID(由于列表左边已选择“语文”类型,在添加图书信息时会自动识别)
在这里您不用写一行代码,系统也不会生成一行代码。您信吗?但不管您信不信,事实就是如此。
在这里有三表数据库表:图书分类、图书信息、借阅记录。(实际上要再加一个分类与图书的多对多表会更友好些,这里为了尽量缩小篇幅省略)
1、图书分类
2、图书信息
3、借阅记录
这三个表的关联关系是借阅记录->图书信息->图书分类;其中图书分类是树型结构数据。
进入LINGX模型驱动开发平台的在线开发工具
点击“创建”-"创建表对象",出现下图:
选择之前创建的数据库表“图书信息”[toa_book]
平台会自动读取“图书信息”[toa_book]表的所有字段,连注释也会一起取出;在这里注释至关重要的,在生成对象模型时注释会变成字段名;同时也让人养成一种建表要注释的习惯。
给模型取名字,点击“确定”后生成对象模型。如下图:
将需要模型功能写入功能树
这里面的功能,前三是自动生成的方法模型;之后是平台默认实现的方法模型,点击“预览”
在这里已经可以对图书信息增删改查,外加分页、查询、高级查询、导出功能。这仅仅是平台最基础的功能。由于默认情况下每个字段的输入控件都是input[type=‘text‘]。所以要设置字段所需的控件
这里对“出版日期”进行了“日期控件”设置
这是各个字段设置好输入控件后预览,数据列表及添加表单功能。
这个图书信息对象模型就建立好了,可以挂在菜单下,就可以对其进行图书信息的管理;但我们要的还远远不止是这个,还要图书分类、借阅记录。
用以上的方法建立图书分类与借阅记录两个模型,因为图书分类是树型结构。所以表字段必须要包含fid字段。fid字段要指向自身模型
注意其中的两个属性:输入控件(dialogtree树型对话单选框)与指向对象模型(自身表名即模型代码),在这里补充图书信息的"隶属分类"字段【指向对象模型】为图书类别,借阅记录的"隶属图书"字段【指向对象模型】为图书信息,这样三者之间就建立了外键关联关系。
然后在对象里分别指定“级联对象”属性,如下图:
其中图书类型的级联对象为JSON对象,具体是:[{name:‘图书信息‘,entity:‘toa_book‘,method:‘grid_cascade‘,rule:‘‘}]
而图书信息中的级联对象为借阅记录的对象代码:toa_book_record。
到这里已经完成了三个对象模型的配置工作,现在只差把功能挂在菜单之下,进入“系统管理”-“菜单管理”,如下图:
到这里已经全部完成。在这里可能并没有完全展示所有的操作细节,有些人会看不明白。这些都没关系有视频介绍一步都没落下:http://pan.baidu.com/s/1cG89FC
这就是模型驱动开发的魅力,但我觉得我这平台已经超越了模型驱动开发MDD达到领域驱动开发DDD,因为在业务模型中可以调用系统的所有资源及任意业务嵌套;
不知道有没有说清楚,欢迎各位同学拍砖交流。
平台首页:http://www.lingx.com/ ,DEMO:http://demo.lingx.com ;账号:lingx ,密码:000000
QQ:1211278515