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

使用方式

  1. 修改代码生成配置

编辑 ./config/config.toml


# Gen
[gen]
    author        = "gfast"
    moduleName    = "module"
    packageName   = "gfast"
    autoRemovePre = true
    tablePrefix   = "t_,sys_"

author: 开发者姓名,生成到类注释上
packageName: 默认生成包路径
autoRemovePre: 是否自动去除表前缀
tablePrefix: 表前缀

  1. 新建数据库表结构

2.1 单表

drop table if exists sys_student;
create table sys_student (
  student_id           int(11)         auto_increment    comment '编号',
  student_name         varchar(30)     default ''        comment '学生名称',
  student_age          int(3)          default null      comment '年龄',
  student_hobby        varchar(30)     default ''        comment '爱好(0代码 1音乐 2电影)',
  student_sex          char(1)         default '0'       comment '性别(0男 1女 2未知)',
  student_status       char(1)         default '0'       comment '状态(0正常 1停用)',
  student_birthday     datetime                          comment '生日',
  primary key (student_id)
) engine=innodb auto_increment=1 comment = '学生信息表';

2.2 树表

drop table if exists sys_product;
create table sys_product (
  product_id        bigint(20)      not null auto_increment    comment '产品id',
  parent_id         bigint(20)      default 0                  comment '父产品id',
  product_name      varchar(30)     default ''                 comment '产品名称',
  order_num         int(4)          default 0                  comment '显示顺序',
  status            char(1)         default '0'                comment '产品状态(0正常 1停用)',
  primary key (product_id)
) engine=innodb auto_increment=1 comment = '产品表';
  1. 新建数据库表结构(主子表)
-- ----------------------------
-- 客户表
-- ----------------------------
drop table if exists sys_customer;
create table sys_customer (
  customer_id           bigint(20)      not null auto_increment    comment '客户id',
  customer_name         varchar(30)     default ''                 comment '客户姓名',
  phonenumber           varchar(11)     default ''                 comment '手机号码',
  sex                   varchar(20)     default null               comment '客户性别',
  birthday              datetime                                   comment '客户生日',
  remark                varchar(500)    default null               comment '客户描述',
  primary key (customer_id)
) engine=innodb auto_increment=1 comment = '客户表';


-- ----------------------------
-- 商品表
-- ----------------------------
drop table if exists sys_goods;
create table sys_goods (
  goods_id           bigint(20)      not null auto_increment    comment '商品id',
  customer_id        bigint(20)      not null                   comment '客户id',
  name               varchar(30)     default ''                 comment '商品名称',
  weight             int(5)          default null               comment '商品重量',
  price              decimal(6,2)    default null               comment '商品价格',
  date               datetime                                   comment '商品时间',
  type               char(1)         default null               comment '商品种类',
  primary key (goods_id)
) engine=innodb auto_increment=1 comment = '商品表';
  1. 登录系统(系统工具 -> 代码生成 -> 导入对应表)

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

代码生成补充说明:

  1. 数据库建表,添加注释会有中文字段信息
  2. 在线生成代码
  3. copy到对应目录或下载生成的代码到对应业务目录
    3.1 若数据类型不对手动调整
    3.2 生成model entity 补充数据
    gf gen model -path “./app/model/module(对应业务目录)” -t 业务表名
  4. 服务重启后,添加菜单
    注意目录更路径有这个决定:
    moduleName = “module”
    所有新生成模块,都是 module/开头
    配置 routerAdmin.go 注意:这个group放在哪个更路径下
    //扩展业务
    group.Group("/module", func(group *ghttp.RouterGroup) {
     group.ALL("/xxx", new(module.xxx))
    })
    代码生成后,若修改了表信息重新生成,需要在代码生成列表页重新导入数据表生成。
文档更新时间: 2021-02-04 11:20   作者:admin