gf gen dao: 数据库表设计的字段名字不重复,生成的结构体重复,怎么处理?
What do you want to ask?
表设计ï¼
CREATE TABLE `info` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'èªå¢ID',
`updateTime` timestamp NULL DEFAULT NULL COMMENT 'è®°å½æ´æ°æ¶é´',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'æ´æ°æ¶é´',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='æºè½ç¸å
³æ°æ®';
çæçç»æä½ï¼
type Info struct {
Id uint `json:"id" orm:"id" description:"èªå¢ID"` // èªå¢ID
UpdateTime *gtime.Time `json:"updateTime" orm:"updateTime" description:"è®°å½æ´æ°æ¶é´"` // è®°å½æ´æ°æ¶é´
UpdateTime *gtime.Time `json:"updateTime" orm:"update_time" description:"æ´æ°æ¶é´"` // æ´æ°æ¶é´
}
æçé®é¢æ¯ï¼è½ä¸è½å 个æ§å¶åæ°ï¼å段ååä¸ç»æä½ååä¿æä¸è´ï¼ä½æ¯ç»æä½çåæ®µååé¦åæ¯å¤§åï¼ ç±»ä¼¼çæäºå¦ä¸ç»æä½ï¼
type Info struct {
Id uint `json:"id" orm:"id" description:"èªå¢ID"` // èªå¢ID
UpdateTime *gtime.Time `json:"updateTime" orm:"updateTime" description:"è®°å½æ´æ°æ¶é´"` // è®°å½æ´æ°æ¶é´
Update_time *gtime.Time `json:"update_time" orm:"update_time" description:"æ´æ°æ¶é´"` // æ´æ°æ¶é´
}
我的建议是不要为了“看起来像数据库字段”而牺牲 Go 语言的命名规范和工程实践。结构体是给 Go 程序员看的,不是给数据库看的。开发者关心的是语义,不是拼写形式。换成updated_at这种我觉得更合适,当然如果你的使用场景确实只能像你说的那么做,那就直接fork一下然后改一下gen内部用吧,也确实有时候会遇到一些很离谱的现实情况
我的建议是不要为了“看起来像数据库字段”而牺牲 Go 语言的命名规范和工程实践。结构体是给 Go 程序员看的,不是给数据库看的。开发者关心的是语义,不是拼写形式。换成
updated_at这种我觉得更合适,当然如果你的使用场景确实只能像你说的那么做,那就直接fork一下然后改一下gen内部用吧,也确实有时候会遇到一些很离谱的现实情况
就是为了尊重工程实践,我才搞模型生成,但是有些同事设计的表实在是变态,另外fork改动一下这个路子能解决问题,但是后续升级就不方便了。
我的建议是不要为了“看起来像数据库字段”而牺牲 Go 语言的命名规范和工程实践。结构体是给 Go 程序员看的,不是给数据库看的。开发者关心的是语义,不是拼写形式。换成
updated_at这种我觉得更合适,当然如果你的使用场景确实只能像你说的那么做,那就直接fork一下然后改一下gen内部用吧,也确实有时候会遇到一些很离谱的现实情况就是为了尊重工程实践,我才搞模型生成,但是有些同事设计的表实在是变态,另外fork改动一下这个路子能解决问题,但是后续升级就不方便了。
还是尝试说服同事改一下表字段吧,毕竟大部分项目里一张表同时出现updateTime和update_time的时候按理说review的哥们应该开始骂人了,你要是实在想要可以提个PR试一下看看会不会合并