molicode生成vue增删改查功能

molicode生成vue增删改查功能

背景描述

当前生成的页面主要应用于VUE前端UI框架 iview: https://iviewui.com/;

本工具当前模板提供了基本的增删改查功能适配;

本工具生成的模板需要一些基本的脚手架,最好参考我fork的iview-admin的开发分支:

https://github.com/cn2oo8/iview-admin/tree/d_20190525_clean_more;

里面有一些资源是必须的,或者建议你调整模板生成你公司的代码工具类型。

自动生成代码的基本要求

a. 下载molicode代码生成工具并解压到本地文件夹。

下载地址: https://github.com/cn2oo8/molicode/releases;

如果您是Java程序员,你应该很easy的启动起来,如果您非Java程序员,请下载最新版本的jre并安装。

本软件运行需要jdk8及以上版本。

b. 通过数据库表生成tableModel 表模型

通过配置数据库相关链接信息后,自动生成tableModel xml文件。

打开tableModel xml文件,进行微调,如新增页面需要哪些字段,修改页面需要哪些字段,列表页面需要哪些字段,查询条件需要哪些字段。这些都可以进行微调,以便生成的业务代码更加的个性化,定制化。

生成了tableModel后,即可利用其来生成代码了。

c. 获取代码模板

如果您是一个模板使用者,这是比较简单的,您可以和模板开发人员联系,让其告知您git仓库地址,然后下载即可。也可以让他直接发压缩包如zip, tar, rar等文件,然后解压到本地即可。

如果您下载最新的molicode工具,您可以直接使用内置的模板。

d. 项目配置

项目配置是为了在不同项目之间能够快速切换,项目配置记录了本项目以下相关信息:

  1. 数据库连接信息;(如果不需要数据库相关功能,可以不配);

  2. 工程目录设置;(用于设置工作目录,如tableModel生成目录, 代码输出目录,模板类型和存储路径等); 特别说明:模板根目录请设置到autoCode.xml的上级目录即可;

  3. 业务代码设置;

设置代码相关的配置信息,后期期望是提供一个入口,可以提供更多的用户可配置项目;

e. 代码生成

好了,总算来到最后一步,惊不惊喜意不意外。经过以上的设置后,即可直接生成业务代码了,让代码飞一会儿。

  1. 选择适配的数据模型:tableModel(其它的请参考其它文章);
  2. 输入源类型; 一般选择文件;
  3. 数据源文件路径:之前生成并配置后的tableModel文件路径;用于作为数据源;
  4. 其它配置略;
  5. 模板列表,选择需要生成的代码模板;
  6. 点击【生成代码】按钮即可。

以上几个步骤就是生成代码需要的所有步骤,请务必按要求进行操作。

更详细的使用说明,可以参考:

https://cn2oo8.github.io/molicode_doc/

吐槽

配置这么多,是不是太麻烦了??

从某种意义上来讲,配置主要集中在第一次使用时,等您配置了第一次之后,其实您只需要每次使用:b,e 步骤即可自动生成业务代码了。 万事开头难,后面的好简单!

实际操作

**目标: ** 使用一个表生成基本的增删改查功能。

step 1: 配置项目

如果是生成iviewui的增删改查功能,只需要点选vue界面开发即可进行切换; vue_project

配置数据库信息,目前只支持MySQL(当前工具内置的jdbc版本较老,对mysql 8 当前略有问题),其实是很容易支持其它数据库的,但是当前没有时间做相应的开发,期望您join并实现您需要的数据库类型。

配置输出目录: 请修改代码输出相关目录;

如下图所示,模板在molicode安装目录的下的 template_repos/autocode-template/autocode-template-vue文件夹下面。 project_out

配置业务代码相关信息,以下为Java相关信息,页面生成可按您的需求配置;

step 4: 生成tableModel

tableModel 输出结果:

<?xml version="1.0" encoding="UTF-8" ?> 
<tableModel>
  <tableDefine id='AcConfig' cnname='配置信息' dbTableName='ac_config'>
    <column dataName='id' columnName='id' cnname='ID' columnType='BIGINT' canBeNull='false' readonly='false' isPK='true' length='19' jspTag='TEXT' dictName='' comment='ID' />
    <column dataName='type' columnName='type' cnname='类型' columnType='INT' canBeNull='false' readonly='false' isPK='false' length='10' jspTag='SELECT' dictName='acConfig_type_DICT' comment='类型:1.文本,2.json,3.xml, 4.properties, 5.开关' />
    <column dataName='projectKey' columnName='project_key' cnname='项目key' columnType='VARCHAR' canBeNull='true' readonly='false' isPK='false' length='50' jspTag='TEXT' dictName='' comment='项目key' />
    <column dataName='scope' columnName='scope' cnname='范围' columnType='INT' canBeNull='true' readonly='false' isPK='false' length='10' jspTag='SELECT' dictName='acConfig_scope_DICT' comment='范围:1.本地,2.仓库' />
    <column dataName='configKey' columnName='config_key' cnname='配置key' columnType='VARCHAR' canBeNull='false' readonly='false' isPK='false' length='50' jspTag='TEXT' dictName='' comment='配置key' />
    <column dataName='configValue' columnName='config_value' cnname='配置值' columnType='VARCHAR' canBeNull='true' readonly='false' isPK='false' length='2000' jspTag='TEXT' dictName='' comment='配置值' />
    <column dataName='ext1' columnName='ext1' cnname='扩展1' columnType='VARCHAR' canBeNull='true' readonly='false' isPK='false' length='50' jspTag='TEXT' dictName='' comment='扩展1' />
    <column dataName='ext2' columnName='ext2' cnname='扩展2' columnType='VARCHAR' canBeNull='true' readonly='false' isPK='false' length='50' jspTag='TEXT' dictName='' comment='扩展2' />
    <column dataName='ext3' columnName='ext3' cnname='扩展3' columnType='VARCHAR' canBeNull='true' readonly='false' isPK='false' length='50' jspTag='TEXT' dictName='' comment='扩展3' />
    <column dataName='creator' columnName='creator' cnname='创建人' columnType='VARCHAR' canBeNull='true' readonly='false' isPK='false' length='20' jspTag='TEXT' dictName='' comment='创建人' />
    <column dataName='operator' columnName='operator' cnname='修改人' columnType='VARCHAR' canBeNull='true' readonly='false' isPK='false' length='20' jspTag='TEXT' dictName='' comment='修改人' />
    <column dataName='concurrentVersion' columnName='concurrent_version' cnname='并发版本号' columnType='BIGINT' canBeNull='true' readonly='false' isPK='false' length='19' jspTag='TEXT' dictName='' comment='并发版本号' />
    <column dataName='dataVersion' columnName='data_version' cnname='数据版本' columnType='BIGINT' canBeNull='true' readonly='false' isPK='false' length='19' jspTag='TEXT' dictName='' comment='数据版本' />
    <column dataName='status' columnName='status' cnname='状态' columnType='TINYINT' canBeNull='true' readonly='false' isPK='false' length='3' jspTag='SELECT' dictName='acConfig_status_DICT' comment='状态:1.有效,-1.无效' />
    <column dataName='created' columnName='created' cnname='创建时间' columnType='DATETIME' canBeNull='true' readonly='false' isPK='false' length='19' jspTag='DATETIME' dictName='' comment='创建时间' />
    <column dataName='modified' columnName='modified' cnname='修改时间' columnType='DATETIME' canBeNull='true' readonly='false' isPK='false' length='19' jspTag='DATETIME' dictName='' comment='修改时间' />
  </tableDefine>
  <orderColumns>
    <orderColumn orderType='desc'>id</orderColumn>
  </orderColumns>
  <bizFieldsMap>
    <bizFields key='createTime'>created</bizFields>
    <bizFields key='updateTime'>modified</bizFields>
    <bizFields key='queryList'>id,type,project_key,scope,config_key,config_value,ext1,ext2,ext3,creator,operator,concurrent_version,data_version,status,modified</bizFields>
    <bizFields key='addList'>id,type,project_key,scope,config_key,config_value,ext1,ext2,ext3,creator,operator,concurrent_version,data_version,status</bizFields>
    <bizFields key='updateList'>id,type,project_key,scope,config_key,config_value,ext1,ext2,ext3,creator,operator,concurrent_version,data_version,status</bizFields>
    <bizFields key='viewList'>id,type,project_key,scope,config_key,config_value,ext1,ext2,ext3,creator,operator,concurrent_version,data_version,status,created,modified</bizFields>
    <bizFields key='searchKey'>id,type,status</bizFields>
    <bizFields key='allColumn'>id,type,project_key,scope,config_key,config_value,ext1,ext2,ext3,creator,operator,concurrent_version,data_version,status,created,modified</bizFields>
  </bizFieldsMap>
  <dicts>
    <dict id='acConfig_scope_DICT' name='scope字段的字典项'>
      <option value='1' cssClass=''>本地</option>
      <option value='2' cssClass=''>仓库</option>
    </dict>
    <dict id='acConfig_status_DICT' name='status字段的字典项'>
      <option value='1' cssClass=''>有效</option>
      <option value='-1' cssClass=''>无效</option>
    </dict>
    <dict id='acConfig_type_DICT' name='type字段的字典项'>
      <option value='1' cssClass=''>文本</option>
      <option value='2' cssClass=''>json</option>
      <option value='3' cssClass=''>xml</option>
      <option value='4' cssClass=''>properties</option>
      <option value='5' cssClass=''>开关</option>
    </dict>
  </dicts>
</tableModel>

step 5: 生成代码

选择正确的tableModel文件,然后执行代码生成。即:【数据源文件路径】 需要选择您要生成的表的tableModel xml配置文件。如果模板没有显示,请点击按钮【刷新模板列表】。 output

happy ending

查看生成的项目和代码:

日志:

2019-06-03 00:08:03,410 [http-nio-8098-exec-2] INFO   (frontConsole:-1) - [add页面]模板执行成功,生成文件在:/Users/xxx/myApp/molicode_binary/moliCode_mac_jre8_beta-20190531/output_tmp/code/ui-starter/src/views/auth/acProject/add.vue
2019-06-03 00:08:03,412 [http-nio-8098-exec-2] INFO   (frontConsole:-1) - [edit页面]模板执行成功,生成文件在:/Users/xxx/myApp/molicode_binary/moliCode_mac_jre8_beta-20190531/output_tmp/code/ui-starter/src/views/auth/acProject/edit.vue
2019-06-03 00:08:03,413 [http-nio-8098-exec-2] INFO   (frontConsole:-1) - [list页面]模板执行成功,生成文件在:/Users/xxx/myApp/molicode_binary/moliCode_mac_jre8_beta-20190531/output_tmp/code/ui-starter/src/views/auth/acProject/list.vue
2019-06-03 00:08:03,414 [http-nio-8098-exec-2] INFO   (frontConsole:-1) - [operate页面]模板执行成功,生成文件在:/Users/xxx/myApp/molicode_binary/moliCode_mac_jre8_beta-20190531/output_tmp/code/ui-starter/src/views/auth/acProject/operate.vue
2019-06-03 00:08:03,416 [http-nio-8098-exec-2] INFO   (frontConsole:-1) - [表结构模型]模板执行成功,生成文件在:/Users/xxx/myApp/molicode_binary/moliCode_mac_jre8_beta-20190531/output_tmp/code/ui-starter/src/views/auth/acProject/tableDefine.js
2019-06-03 00:08:03,417 [http-nio-8098-exec-2] INFO   (frontConsole:-1) - [一些配置信息,请复制到相关常量类使用]模板执行成功,生成文件在:/Users/xxx/myApp/molicode_binary/moliCode_mac_jre8_beta-20190531/output_tmp/code/ui-starter/src/views/auth/acProject/config.js

生成代码说明:

tableDefine.vue 表结构描述 list.vue 分页查询入口(整个功能的入口) add.vue 新增页面 edit.vue 修改页面 operate.vue 列表后的操作选项 config.js 一些可以复制使用的配置信息;

生成的代码示例:

请查看: https://github.com/cn2oo8/iview-admin/tree/d_20190525_clean_more/src/view/config/acProject

生成vue相关的界面资源,但是需要一些脚手架才能正常使用。

相关脚手架可以从以下地址分支获取: https://github.com/cn2oo8/iview-admin/tree/d_20190525_clean_more

主要有: src/constants 下的常量工具如: constants.js, dicts.js, urls.js

src/lib目录下的: renderUtil.js 工具;

src/request/ 目录下的: axiosInstance.js, requestUtil.js

/src/view/components/common 下的字典相关组件,需要配合:/src/store/module/dict.js使用;

UI: 使用的是基于 Vue的 iview UI, 使用起来比较定制化,可能需要您去适用,其它UI框架需要适配建议您开发好后联系我,可以分享给大家使用。 https://github.com/cn2oo8/molicode_template_awesome)

转载于:https://my.oschina.net/davidzhang/blog/3057566

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值