scaffold基于數(shù)據(jù)庫(kù)定義的代碼生成器
scaffold 是一款基于數(shù)據(jù)庫(kù)定義的代碼生成器。
它是如何工作的?
正如我們所知,go 中進(jìn)行 json 字符串的編碼/解碼過(guò)程中, 可以通過(guò)對(duì)象定義時(shí)字段的tag定義, 對(duì)字段進(jìn)行補(bǔ)充說(shuō)明。如下例:
type JsonSomething struct{
AField int64 `json:"x"`
BField string `json:"y"`
}
同樣的方法, scaffold 通過(guò)數(shù)據(jù)庫(kù)定義中的字段(或表)的 COMMENT 定義來(lái)對(duì)相應(yīng)字段(或表)進(jìn)行補(bǔ)充說(shuō)明, 在根據(jù)模板進(jìn)行代碼生成。如:
CREATE TABLE `users` ( `id` INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT 'caption:"編號(hào)"', `name` VARCHAR(32) NOT NULL DEFAULT '' COMMENT 'caption:"名稱"', `mailbox` VARCHAR(128) NOT NULL DEFAULT '' COMMENT 'caption:"郵箱"', `sex` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'caption:"性別"', `description` VARCHAR(256) NOT NULL DEFAULT '' COMMENT 'caption:"描述"', `password` VARCHAR(32) NOT NULL DEFAULT '' COMMENT 'caption:"密碼"', `head_url` VARCHAR(255) NOT NULL DEFAULT '' COMMENT 'caption:"頭像"', `status` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'caption:"狀態(tài)"', `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'caption:"創(chuàng)建時(shí)間"' ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT 'caption:"會(huì)員"';
如定義表結(jié)構(gòu)后, scaffold 就可以通過(guò)模板函數(shù)讀取到 comment 中的 caption 字段, 并根據(jù)模板生成代碼了。
評(píng)論
圖片
表情
