Gorm的CRUD(1) | 青训营

79 阅读1分钟

CRUD通常指数据库的增删改查操作,本文详细介绍了如何使用GORM实现创建、查询、更新和删除操作。

本文中的db变量为*gorm.DB对象,例如:

  db, err := gorm.Open("mysql", "user:password@/dbname?charset=utf8&parseTime=True&loc=Local")
  defer db.Close()

}

如图便将db与自身的mysql数据库连接了起来,便于进行之后的操作。

创建

创建记录

首先定义用户模型,包含id,姓名,年龄:

type User struct {
	ID           int64
	Name         string
	Age          int64
}

使用使用NewRecord()查询主键是否存在,也就是是否创建了响应对象,主键为空使用Create()创建记录:

user := User{Name: "q1mi", Age: 18}

db.NewRecord(user) 
db.Create(&user)   
db.NewRecord(user) 

默认值

可以通过 tag 定义字段的默认值,这样在没有指定值时,该属性拥有默认值,比如:

type User struct {
  ID   int64
  Name string `gorm:"default:'小王子'"`
  Age  int64
}

注意: 通过tag定义字段的默认值,在创建记录时候生成的 SQL 语句会排除没有值或值为 零值 的字段。 在将记录插入到数据库后,Gorm会从数据库加载那些字段的默认值。

举个例子:

var user = User{Name: "", Age: 99}
db.Create(&user)

上面代码实际执行的SQL语句是INSERT INTO users("age") values('99');,排除了零值字段Name,而在数据库中这一条数据会使用设置的默认值小王子作为Name字段的值。

注意: 所有字段的零值, 比如0"",false或者其它零值,都不会保存到数据库内,但会使用他们的默认值。 如果你想避免这种情况,可以考虑使用指针或实现 Scanner/Valuer接口,比如: