大部分项目里其实有很多代码都是重复的,几乎每个基础模块的代码都有增删改查的功能,而这些功能都是大同小异, 如果这些功能都要自己去写,将会大大浪费我们的精力降低效率。所以这种重复性的代码可以使用代码生成。
代码生成和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
最后编辑:管理员 更新时间:2024-12-03 15:05