gfast 后端開發(fā)-代碼生成

2022-03-29 16:36 更新

大部分項目里其實有很多代碼都是重復(fù)的,幾乎每個基礎(chǔ)模塊的代碼都有增刪改查的功能,而這些功能都是大同小異, 如果這些功能都要自己去寫,將會大大浪費(fèi)我們的精力降低效率。所以這種重復(fù)性的代碼可以使用代碼生成。

使用方式

修改代碼生成配置 

  • 編輯 ??./config/config.toml??

# Gen
[gen]
    author        = "gfast"  #作者
    moduleName    = "system" #默認(rèn)模塊
    packageName   = "gfast/app/system" #默認(rèn)包路徑
    autoRemovePre = true   #是否自動刪除表前綴
    tablePrefix   = "table_,qxkj_"   #表前綴(配置后生成的文件將忽略前綴)
    templatePath  = "./template/vm"  #代碼生成模板路徑
    frontDir = "F:/tools/webProject/gfast-ui" #前端路徑(配置您自己的前端路徑,用于將代碼生成到前端對應(yīng)位置)

  • 新建數(shù)據(jù)庫表結(jié)構(gòu)

單表

# 班級表
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='代碼生成關(guān)聯(lián)測試表';

# 人員表(學(xué)生表)
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 '創(chuàng)建日期',
  `updated_at` datetime DEFAULT NULL COMMENT '修改日期',
  `deleted_at` datetime DEFAULT NULL COMMENT '刪除日期',
  `created_by` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '創(chuàng)建人',
  `updated_by` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '修改人',
  `demo_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '狀態(tài)',
  `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='代碼生成測試表';

  • 以上兩個表的關(guān)系是:班級表中的?id與 學(xué)生表中的?classes是一對多關(guān)系,在添加學(xué)生信息的時候可以選擇對應(yīng)的班級。

樹表

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 '創(chuàng)建日期',
  `updated_at` datetime DEFAULT NULL COMMENT '修改日期',
  `deleted_at` datetime DEFAULT NULL COMMENT '刪除日期',
  `created_by` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '創(chuàng)建人',
  `updated_by` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '修改人',
  `demo_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '狀態(tài)',
  `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='代碼生成樹形結(jié)構(gòu)測試表';

  • 樹表中 ?id與 ?parent_id ?對應(yīng)父子關(guān)系(字段名不限制)

登錄系統(tǒng)(系統(tǒng)工具 -> 代碼生成 -> 導(dǎo)入對應(yīng)表)

m_8c9724eb3c4fe33146e51765b2dbf789_r

代碼生成列表中找到需要表(可預(yù)覽、修改、刪除生成配置)

  • 配置字段屬性。配置對應(yīng)的字段類型,字典選項,關(guān)聯(lián)表字段。

m_a873eb49a0d4c38d1c87902d399619c6_r

  • 配置基本信息

m_c2c974ff330cb1463eb106f42f8172f1_r

  • 配置生成信息

m_2cfa5c0073da2f1d89ce80a6d82fe7cb_r

  • 預(yù)覽生成代碼

m_70953049e9ded997acbeecefa7cd36fd_r

  • 確定沒有問題后可直接生成代碼

生成代碼后若需重新生成,只有 ?model和 ?dao_internal會自動覆蓋,其他文件不會重新生成,若要重新生成請刪除已生成的文件后再次生成,若需重新生成菜單需要把已生成的菜單刪除并刪除/data/gen_sql中對應(yīng)的sql文件,生成后重啟前后端服務(wù)即可。

如果是關(guān)聯(lián)表需要先生成主表再生成附表或者批量同時生成,例如上面的例子需要先生成班級表,再生成學(xué)生表這樣在添加學(xué)生信息時才能選擇班級。

第一次生成非system模塊代碼后,需要在/router/router.go文件中導(dǎo)入模塊路由。 已更新自動注冊模塊路由功能,不再需要手動添加。

代碼生成后,若修改了表信息重新生成,需要在代碼生成列表頁重新導(dǎo)入數(shù)據(jù)表生成。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號