scaffold基于數(shù)據(jù)庫定義的代碼生成器
scaffold 是一款基于數(shù)據(jù)庫定義的代碼生成器。
它是如何工作的?
正如我們所知,go 中進(jìn)行 json 字符串的編碼/解碼過程中, 可以通過對象定義時字段的tag定義, 對字段進(jìn)行補(bǔ)充說明。如下例:
type JsonSomething struct{
AField int64 `json:"x"`
BField string `json:"y"`
}
同樣的方法, scaffold 通過數(shù)據(jù)庫定義中的字段(或表)的 COMMENT 定義來對相應(yīng)字段(或表)進(jìn)行補(bǔ)充說明, 在根據(jù)模板進(jìn)行代碼生成。如:
CREATE TABLE `users` ( `id` INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT 'caption:"編號"', `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)建時間"' ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT 'caption:"會員"';
如定義表結(jié)構(gòu)后, scaffold 就可以通過模板函數(shù)讀取到 comment 中的 caption 字段, 并根據(jù)模板生成代碼了。
評論
圖片
表情
