scaffold基于数据库定义的代码生成器

联合创作 · 2023-09-28 03:27

scaffold 是一款基于数据库定义的代码生成器。


它是如何工作的?


正如我们所知,go 中进行 json 字符串的编码/解码过程中, 可以通过对象定义时字段的tag定义, 对字段进行补充说明。如下例:



type JsonSomething struct{
AField int64 `json:"x"`
BField string `json:"y"`
}

同样的方法, scaffold 通过数据库定义中的字段(或表)的 COMMENT 定义来对相应字段(或表)进行补充说明, 在根据模板进行代码生成。如:



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:"状态"',
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'caption:"创建时间"'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT 'caption:"会员"';

如定义表结构后, scaffold 就可以通过模板函数读取到 comment 中的 caption 字段, 并根据模板生成代码了。

浏览 18
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报