時間戳跟蹤
CreateAt
如果模型有CreateAt字段,該字段的值將會是初次創建記錄的時間。
db.Create(&user) // `CreateAt`將會是當前時間
// 可以使用`Update`方法來改變`CreateAt`的值 db.Model(&user).Update("CreateAt", time.Now())
UpdateAt
如果模型有UpdateAt字段,該字段的值將會是每次更新記錄的時間。
db.Save(&user) // `UpdateAt`將會是當前時間 db.Model(&user).Update("name","jinzhu") // `UpdateAt`將會是當前時間
DeleteAt
如果模型有DeleteAt字段,調用Delete刪除該記錄時,將會設置DeleteAt字段爲當前時間,而不是直接將記錄從數據庫中刪除。
CURD(增刪改查)
package main import ( "database/sql" "github.com/jinzhu/gorm" _"github.com/jinzhu/gorm/dialects/mysql" ) // 1.定義模型 type User struct { ID int64 Name string Age int64 } func main(){ // 2.連接MySQL數據庫 db, err := gorm.Open("mysql","root:root1234@(127.0.0.1:13306)/db1?charset=utf8mb4&parseTime=True&loc=Local") if err != nil { panic(err) } defer db.Close() // 3. 把模型與數據庫中的表對應起來 Db.AutoMigrate(&User{}) // 4. 創建 u := User{Name:"qimi",Age:18} // 在代碼層面創建一個User對象 fmt.Println(db.NewRecord(&u)) // 判斷主鍵是否爲空 true db.Create(&u) // 在數據庫中創建了一條 qimi 18 的記錄 fmt.Println(db.NewRecord(&u)) // 判斷主鍵是否爲空 false // 5.查詢 var user User db.First(&user) // 6.更新 user.Name = "七米" user.Age = 99 db.Debug().Save(&user) // 默認會修改所有字段 db.Debug().Model(&user).Update("name","小王子") m1 := map[string]interface{}{ "name":"mily", "age":28, "active":true, } db.Debug().Model(&user).Update(m1) // m1列出來的所有字段都會更新 db.Debug().Model(&user).Select("age").Updates(m1) // 只更新age字段 db.Debug().Model(&user).Omit("active").Updates(m1) // 排除m1中的active更新其他字段 }