起因
很多年以前,当我第一次接触到ORM的时候,我就有一点疑惑:这玩意用起来倒是方便,就是模型结构得一个字段一个字段的写,非常枯燥也非常累人,而且如果表结构修改了,比如增加、减少或者修改了一个字段,就得修改模型文件。那个时候也没有想到可以从数据库中读取到目标表的表结构数据自动生成ORM需要的模型结构。直到有一天我看到一个根据模板自动生成ORM的模型文件的代码,然后我就用golang也写了这么一个玩意。完整的代码在这里。
生成过程
准备工作
假设我在mysql中创建了一个名为dbnote的库,并且创建了一个名为msg的表,创建语句如下:
CREATE TABLE msg (
id int(11) NOT NULL AUTO_INCREMENT,
sender_id int(11) NOT NULL COMMENT '发送者',
receiver_id int(11) NOT NULL COMMENT '接收者',
content varchar(256) NOT NULL COMMENT '内容',
status tinyint(4) NOT NULL,
createtime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
那么对应的ORM模型则是
type Msg struct {
ID int `db:"id" json:"id"` //
SenderID int `db:"sender_id" json:"sender_id"` // 发送者
ReceiverID int `db:"receiver_id" json:"receiver_id"` // 接收者
Content