gfast 后端开发-代码生成

2022-03-29 16:36 更新

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

使用方式

修改代码生成配置 

  • 编辑 ​​./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" #前端路径(配置您自己的前端路径,用于将代码生成到前端对应位置)

  • 新建数据库表结构

单表

# 班级表
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是一对多关系,在添加学生信息的时候可以选择对应的班级。

树表

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 ​对应父子关系(字段名不限制)

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

m_8c9724eb3c4fe33146e51765b2dbf789_r

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

  • 配置字段属性。配置对应的字段类型,字典选项,关联表字段。

m_a873eb49a0d4c38d1c87902d399619c6_r

  • 配置基本信息

m_c2c974ff330cb1463eb106f42f8172f1_r

  • 配置生成信息

m_2cfa5c0073da2f1d89ce80a6d82fe7cb_r

  • 预览生成代码

m_70953049e9ded997acbeecefa7cd36fd_r

  • 确定没有问题后可直接生成代码

生成代码后若需重新生成,只有 ​model和 ​dao_internal会自动覆盖,其他文件不会重新生成,若要重新生成请删除已生成的文件后再次生成,若需重新生成菜单需要把已生成的菜单删除并删除/data/gen_sql中对应的sql文件,生成后重启前后端服务即可。

如果是关联表需要先生成主表再生成附表或者批量同时生成,例如上面的例子需要先生成班级表,再生成学生表这样在添加学生信息时才能选择班级。

第一次生成非system模块代码后,需要在/router/router.go文件中导入模块路由。 已更新自动注册模块路由功能,不再需要手动添加。

代码生成后,若修改了表信息重新生成,需要在代码生成列表页重新导入数据表生成。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号