大部分项目里其实有很多代码都是重复的,几乎每个基础模块的代码都有增删改查的功能,而这些功能都是大同小异, 如果这些功能都要自己去写,将会大大浪费我们的精力降低效率。所以这种重复性的代码可以使用代码生成。
使用方式
- 修改代码生成配置
编辑 ./config/config.toml
# Gen
[gen]
author = "gfast" #作者
moduleName = "system" #默认模块
packageName = "gfast/app/system" #默认包路径
autoRemovePre = true #是否自动删除表前缀
tablePrefix = "table_,qxkj_" #表前缀(配置后生成的文件将忽略前缀)
templatePath = "./template/vm" #代码生成模板路径
frontDir = "F:/tools/webProject/gfast-ui" #前端路径(配置您自己的前端路径,用于将代码生成到前端对应位置)
- 新建数据库表结构
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='代码生成关联测试表';
# 人员表(学生表)
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 '分类',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT COMMENT='代码生成测试表';
以上两个表的关系是:班级表中的
id
与 学生表中的classes
是一对多关系,在添加学生信息的时候可以选择对应的班级。
2.2 树表
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='代码生成树形结构测试表';
树表中
id
与parent_id
对应父子关系(字段名不限制)
- 登录系统(系统工具 -> 代码生成 -> 导入对应表)
- 代码生成列表中找到需要表(可预览、修改、删除生成配置)
4.1 配置字段属性
配置对应的字段类型,字典选项,关联表字段。
4.2 配置基本信息
4.3 配置生成信息
预览生成代码
确定没有问题后可直接生成代码
生成代码后若需重新生成,只有 model 和 dao_internal会自动覆盖,其他文件不会重新生成,若要重新生成请删除已生成的文件后再次生成,若需重新生成菜单需要把已生成的菜单删除并删除/data/gen_sql中对应的sql文件,生成后重启前后端服务即可。
如果是关联表需要先生成主表再生成附表或者批量同时生成,例如上面的例子需要先生成班级表,再生成学生表这样在添加学生信息时才能选择班级。
第一次生成非system模块代码后,需要在/router/router.go文件中导入模块路由。 已更新自动注册模块路由功能,不再需要手动添加。
代码生成后,若修改了表信息重新生成,需要在代码生成列表页重新导入数据表生成。
视频演示
https://www.bilibili.com/video/BV1i64y1e755
作者:管理员 创建时间:2023-01-09 17:16
最后编辑:管理员 更新时间:2023-01-09 17:18
最后编辑:管理员 更新时间:2023-01-09 17:18