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.Q群: 2702237 13835667

相关课文
  • GO语言GORM如何更新字段

  • gorm如何创建记录与模型定义需要注意什么

  • gorm一般查询与高级查询

  • GORM主键、表名、列名的约定

我要说说
网上嘉宾点评