对于GORM的增删查改,首先需要定义一个模型(Model),它是一个 Go 结构体(struct),用来表示数据库中的一张表。比如,可以定义一个用户(User)模型,它有三个字段:ID, Name, Email。我们可以用 gorm.Model 来嵌入一些通用的字段,比如创建时间(CreatedAt),更新时间(UpdatedAt),删除时间(DeletedAt)等。
type User struct {
gorm.Model
Name string
Email string
}
接下来,需要连接到数据库,并且自动迁移(AutoMigrate)模型,这样就可以在数据库中创建对应的表。可以用 gorm.Open 函数来打开一个数据库连接,并传入一个配置参数。然后,可以用 db.AutoMigrate 函数来迁移模型。比如,我们可以用以下代码来连接到 sqlite 数据库,并且创建用户表:
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
if err != nil {
panic("failed to connect database")
}
// Migrate the schema
db.AutoMigrate(&User{})
现在,已经准备好了使用 GORM 来进行 CRUD 操作了。让我们来看看具体的例子吧。
- 创建(Create):可以用 db.Create 函数来创建一个新的记录,并传入一个模型的实例。比如,我们可以用以下代码来创建一个新的用户:
db.Create(&User{Name: "Alice", Email: "alice@example.com"})
- 查询(Query):可以用 db.First, db.Find, db.Take 等函数来查询记录,并传入一个模型的指针或者条件。比如,我们可以用以下代码来查询第一个用户或者根据名字查询用户:
var user User
db.First(&user) // find the first user
db.First(&user, "name = ?", "Alice") // find the first user with name Alice
- 更新(Update):可以用 db.Model, db.Update, db.Updates 等函数来更新记录,并传入一个模型的指针或者条件和要更新的字段。比如,我们可以用以下代码来更新用户的邮箱或者多个字段:
db.Model(&user).Update("Email", "alice@gmail.com") // update user's email
db.Model(&user).Updates(User{Name: "Bob", Email: "bob@gmail.com"}) // update user's name and email
- 删除(Delete):可以用 db.Delete 函数来删除记录,并传入一个模型的指针或者条件。比如,我们可以用以下代码来删除用户:
db.Delete(&user) // delete user
其中代码是转载自官方文档,想了解更多也可以查看文档信息
GORM Guides | GORM - The fantastic ORM library for Golang, aims to be developer friendly.