平時寫代碼,總是要處理更新時間和創建時間,要寫不少的代碼,而且還容易忘記。
針對於這個問題研究了一下有沒有什麼比較好的方式。下面說一下如何擺脫體力勞動。
假設場景,需要改分好畢業。。。
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(32) DEFAULT NULL,
`score` int(11) DEFAULT NULL,
`createtime` datetime DEFAULT CURRENT_TIMESTAMP,
`updatetime` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`userid`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8
此時創建數據庫的語句中要加入 createtime 跟 updatetime 兩個,一個是創建的時候填上,一個是創建的時候天上並且更新的時候自動更新。
這樣就配置好數據庫部分了。
type TableUser struct {
UserID int `gorm:"column:id" json:"id"`
Name string `gorm:"column:name" json:"name"`
Score int `gorm:"column:score" json:"score"`
CreateTime time.Time `gorm:"column:createtime;default:null" json:"createtime"`
UpdateTime time.Time `gorm:"column:updatetime;default:null" json:"updatetime"`
}
這樣gorm需要的結構體也創建好了,最重要的是其中的 default:null ,這樣以後在創建或者更新的時候都不需要傳遞CreuateTime跟UpdateTime兩個了。
var u = TableUser {
Name: "小明",
District: 59,
}u
db.Create(&u)
Nice~