📜  gorm db delete 条件 (1)

📅  最后修改于: 2023-12-03 15:31:03.200000             🧑  作者: Mango

GORM 数据库删除操作的介绍

GORM 是一个基于 Go 语言的简单 ORM 库,可让程序员更轻松地与数据库交互。其中,数据库删除操作是非常常见的一种操作。本文将介绍如何使用 GORM 进行数据库删除操作,以及相应的代码实现。

基本语法

GORM 使用 Delete 方法来进行数据库删除操作,其基本语法如下所示:

db.Delete(&Model{}, "条件")

其中,&Model{} 表示要进行删除操作的数据表对应的结构体,"条件" 表示删除数据的条件。

示例代码

以下代码演示了如何使用 GORM 进行简单的删除操作:

type User struct {
    ID   int
    Name string
}

func main() {
    db, err := gorm.Open("sqlite3", "test.db")
    if err != nil {
        panic("连接数据库失败")
    }
    defer db.Close()

    // 插入新数据
    db.Create(&User{Name: "Lucy"})
    db.Create(&User{Name: "Lily"})

    // 删除数据
    db.Delete(&User{}, "name = ?", "Lucy")

    // 输出剩余数据
    var users []User
    db.Find(&users)
    fmt.Printf("%+v", users)
}

在上述代码中,我们首先定义了一个名为 User 的结构体来表示用户信息。然后,我们使用 db.Create() 方法向数据库中插入了两条数据,紧接着使用 db.Delete() 方法删除了 name 字段为 'Lucy' 的数据。最后,我们再次查询数据库中的数据,并将其打印到控制台上。

方法链

我们可以使用 GORM 的方法链功能来对删除操作进行进一步的流式处理。GORM 的方法链可以让代码变得更加简洁和易读,也可以支持更复杂的查询操作。

以下是一个简单的方法链示例:

// 连续删除所有 age 字段为 33 的记录
db.Where("age = ?", 33).Delete(&User{})

// 删除 name 字段为 Lily 的记录
db.Where("name = ?", "Lily").Delete(&User{})

在以上代码中,我们使用了 Where 方法来指定想要删除的记录。这个方法类似于 SQL 语句中的 WHERE 子句,因此我们可以在其中使用各种操作符来组合条件。

返回值

GORM 的 Delete 方法将返回一个包含删除操作影响到的记录数的结构体。如果没有数据被删除,这个值将为 0

以下是一个示例:

result := db.Delete(&User{}, "name = ?", "Lucy")
fmt.Println(result.RowsAffected)

在以上代码中,我们将 Delete 方法的返回值存储在 result 变量中,并使用 RowsAffected 字段打印被删除的条数。

总结

GORM 的 Delete 方法可用于删除数据库中的数据,其基本语法为:

db.Delete(&Model{}, "条件")

我们可以使用方法链等功能来使代码更加简洁易读,也可以使用返回值来判断删除操作是否成功。