大部分項目里其實有很多代碼都是重復(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)位置)
# 班級表
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='代碼生成測試表';
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)系(字段名不限制)生成代碼后若需重新生成,只有 ?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ù)表生成。
更多建議: