大部分项目里其实有很多代码都是重复的,几乎每个基础模块的代码都有增删改查的功能,而这些功能都是大同小异, 如果这些功能都要自己去写,将会大大浪费我们的精力降低效率。所以这种重复性的代码可以使用代码生成。
代码生成和gfast2.0原理相同,通过模板文件生成。

(授权版才有此功能)

在项目实战章节中可以看到,我们只是做一些增删改查的功能需要自己书写大量代码,大部分时候是重复劳动力,下面我们使用代码生成来做相同的功能,演示代码生成的使用。

使用方式

1、配置模板

1.1 修改代码生成配置

编辑配置文件manifest/config/config.yaml文件

# 代码生成配置
gen:
  author: "gfast"
  moduleName: "system"
  apiName: "api/v1"
  packageName: "internal/app/system"
  goModName: "github.com/tiger1103/gfast/v3"
  autoRemovePre: true   #是否自动删除表前缀
  tablePrefix: "table_,qxkj_"   #表前缀
  templatePath: "./resource/template/vm"  #代码生成模板路径
  frontDir: "../../../project/webProject/p2022/gfast-v3.2-ui/gfast3.2-ui" #前端路径

主要配置最后四项即可

2、 创建数据表

创建对应数据表和项目实战章节同样的数据表

2.1、创建员工分类表:

CREATE TABLE `demo_gen_class` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '分类id',
  `class_name` varchar(30) NOT NULL DEFAULT '' COMMENT '分类名',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='员工分类表';

2.2、创建员工表

CREATE TABLE `demo_gen` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `demo_name` varchar(20) NOT NULL DEFAULT '' COMMENT '姓名',
  `demo_age` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '年龄',
  `classes` varchar(30) NOT NULL DEFAULT '' COMMENT '班级',
  `demo_born` datetime DEFAULT NULL COMMENT '出生年月',
  `demo_gender` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '性别',
  `created_at` datetime DEFAULT NULL COMMENT '创建日期',
  `updated_at` datetime DEFAULT NULL COMMENT '修改日期',
  `deleted_at` datetime DEFAULT NULL COMMENT '删除日期',
  `created_by` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '创建人',
  `updated_by` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '修改人',
  `demo_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态',
  `demo_cate` varchar(30) NOT NULL DEFAULT '' COMMENT '分类',
  `demo_thumb` text COMMENT '头像',
  `demo_photo` text COMMENT '相册',
  `demo_info` text COMMENT '个人描述',
  `demo_file` text COMMENT '相关附件',
  `classes_two` varchar(30) NOT NULL DEFAULT '' COMMENT '班级二',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='员工表';

2.3、创建一个树表,演示树形菜单功能生成

CREATE TABLE `demo_gen_tree` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `parent_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '父级ID',
  `demo_name` varchar(20) NOT NULL DEFAULT '' COMMENT '姓名',
  `demo_age` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '年龄',
  `classes` varchar(30) NOT NULL DEFAULT '' COMMENT '班级',
  `demo_born` datetime DEFAULT NULL COMMENT '出生年月',
  `demo_gender` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '性别',
  `created_at` datetime DEFAULT NULL COMMENT '创建日期',
  `updated_at` datetime DEFAULT NULL COMMENT '修改日期',
  `deleted_at` datetime DEFAULT NULL COMMENT '删除日期',
  `created_by` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '创建人',
  `updated_by` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '修改人',
  `demo_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态',
  `demo_cate` varchar(30) NOT NULL DEFAULT '' COMMENT '分类',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='代码生成树形结构测试表';

3、登录系统(系统工具 -> 代码生成 -> 导入对应表)

4、代码生成列表中找到需要表(可预览、修改、删除生成配置)

4.1 配置基本信息

4.2 生成信息配置

4.3 配置字段信息

4.4 配置完成后可预览代码

4.5 点击生成后,自动生成前后端代码和菜单数据

注意:如果没有生成菜单,可能是resource/data/gen_sql 下已经存在sql文件,删除sql文件后再点生成即可。

4.5.1 注册logic 已更新为自动注册

注册logic,在boot中引入demo 模块的logic

4.5.2 注册模块路由 已更新为自动注册

注意:主路由文件,此文件只需首次创建模块的时候创建,用于处理登录验证,日志记录,用户信息记录,并自动扫描模块中其它路由等。

4.6 刷新页面可以看到生成的功能

刷新页面:

添加一个人员测试:

5、代码生成后如果修改了代码覆盖问题

当我们生成了代码后,生成的代码不能满足实际开发需求时,可能会手动更改已生成的代码,这时候如果又修改了表,比如添加了字段,再次生成代码就会存在覆盖问题,如何快速处理覆盖呢?

5.1 修改表结构比如添加了表字段,然后点击同步,更新到代码生成配置中,如下图:


5.2 点击代码预览,复制需要覆盖的文件内容,比如修改了logic文件,复制该文件内容

5.3 打开ide等工具“与剪切版比较”,即可快速合并改动的地方了


作者:管理员  创建时间:2023-01-06 17:13
最后编辑:管理员  更新时间:2024-12-03 15:05