GORM時間戳跟蹤及CURD(增刪改查)

字號+ 編輯: Snake 修訂: Snake 來源: 原创 2023-09-11 我要說兩句(0)

默認情況下,GORM 使用 ID 作爲主鍵,使用結構體名的 蛇形複數 作爲表名,字段名的 蛇形 作爲列名,並使用 CreatedAt、UpdatedAt 字段追蹤創建、更新時間……

時間戳跟蹤

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更新其他字段
 
}
閲完此文,您的感想如何?
  • 有用

    0

  • 沒用

    0

  • 開心

    0

  • 憤怒

    0

  • 可憐

    0

1.如文章侵犯了您的版權,請發郵件通知本站,該文章將在24小時内刪除;
2.本站標注原創的文章,轉發時煩請注明來源;
3.交流群: 2702237 13835667

相關課文
  • GO語言GORM如何更新字段

  • gorm如何創建記錄與模型定義需要注意什麽

  • gorm一般查詢與高級查詢

  • GORM主鍵、表名、列名的約定

我要說說
網上賓友點評