zoukankan      html  css  js  c++  java
  • MDD:使用模型驱动开发方式进行快速开发(多图预警)

    这个模型驱动开发平台已经开源:https://gitee.com/lingxcom/lingx

    相信很多人跟我一样,不喜欢数据展示、列表分页、数据的增、删、改、查,这种简单又烦琐的搬砖活。

    所以网上出现很多开源的代码生成工具,在多年前我也写过,根据模版生成简单的View、Action、Service、Dao、Bean;但实际上并没有太大变化,代码生成太死板。不是所有表单数据都可以用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,因为在业务模型(执行器)中可以调用系统的所有资源及任意业务嵌套;

    不知道有没有说清楚,欢迎各位同学拍砖交流。

  • 相关阅读:
    使用CustomValidate自定义验证控件
    C#中金额的大小写转换
    Andriod出错之Unable to build: the file dx.jar was not loaded from the SDK folder!
    VC 编写的打字练习
    机房工作笔记Ping只有单向通
    web服务协同学习笔记(1)
    Dll 学习3 将MDI子窗口封装在DLL中
    机房工作学习文件共享
    Andriod出错之Failed to find an AVD compatible with target 'Android 2.2'
    Andriod出错之wrapper was not properly loaded first
  • 原文地址:https://www.cnblogs.com/lingx/p/5612489.html
Copyright © 2011-2022 走看看