使用 GORM(Go 的 ORM 库)连接数据库,并实现增删改查操作 | 青训营

54 阅读2分钟

使用GORM连接数据库实现增删改查操作:开发者的Go语言探索之旅

作为已经熟悉了C语言、Java和Python的开发者。现在,我正踏上学习Go语言的旅程,并计划使用GORM这个强大的ORM库来连接数据库,并实现常见的增删改查操作。

一、连接数据库:初始化GORM

首先,需要在Go项目中引入GORM库和 MySQL 驱动程序。使用以下命令安装GORM:

shCopy code
go get -u github.com/go-gorm/gorm
go get -u gorm.io/driver/mysql

导入必要的包并初始化 GORM,连接到 MySQL 数据库。请确保在 MySQL 数据库中创建了相应的数据库。

package main
​
import (
    "fmt"
    "gorm.io/driver/mysql"
    "gorm.io/gorm"
)
​
const (
    DBUser     = "root"
    DBPassword = "root"
    DBName     = "mygorm"
    DBHost     = "localhost"
    DBPort     = "3306"
)
​
func main() {
    dsn := DBUser + ":" + DBPassword + "@tcp(" + DBHost + ":" + DBPort + ")/" + DBName + "?charset=utf8mb4&parseTime=True&loc=Local"
​
    db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
    if err != nil {
        fmt.Println("Failed to connect to database:", err)
        return
    }
    defer db.Close()
​
    // 此处继续进行数据库操作
}

二、定义模型:创建数据库表

在GORM中,模型(Model)对应数据库表。我们可以创建一个结构体来定义模型,并使用GORM的AutoMigrate函数来自动创建数据库表。以下是一个示例:

goCopy codetype User struct {
    ID       uint   `gorm:"primaryKey"`
    Name     string
    Email    string
    Age      int
}

main函数中,添加以下代码以自动迁移数据库:

goCopy code
db.AutoMigrate(&User{})

三、实现增删改查操作

  1. 插入数据(Create): 使用Create函数插入新的记录到数据库表中。
goCopy codenewUser := User{Name: "Alice", Email: "alice@example.com", Age: 25}
db.Create(&newUser)
  1. 查询数据(Read): 使用Find函数查询数据库中的记录。
goCopy codevar users []User
db.Find(&users)
for _, user := range users {
    fmt.Println(user.ID, user.Name, user.Email, user.Age)
}
  1. 更新数据(Update): 使用Model函数和Updates方法来更新数据库中的记录。
goCopy codevar userToUpdate User
db.First(&userToUpdate, 1) // 根据ID查找要更新的记录
db.Model(&userToUpdate).Updates(User{Name: "Updated Name", Age: 30})
  1. 删除数据(Delete): 使用Delete函数从数据库中删除记录。
goCopy codevar userToDelete User
db.First(&userToDelete, 1) // 根据ID查找要删除的记录
db.Delete(&userToDelete)

四、整合实现过程:实现增删改查操作

下面是整合了以上步骤的完整示例代码,演示了如何使用GORM连接数据库,并实现增删改查操作:

package main
​
import (
    "fmt"
    "gorm.io/driver/mysql"
    "gorm.io/gorm"
)
​
type User struct {
    ID    uint   `gorm:"primaryKey"`
    Name  string
    Email string
    Age   int
}
​
const (
    DBUser     = "root"
    DBPassword = "root"
    DBName     = "mygorm"
    DBHost     = "localhost"
    DBPort     = "3306"
)
​
func main() {
    dsn := DBUser + ":" + DBPassword + "@tcp(" + DBHost + ":" + DBPort + ")/" + DBName + "?charset=utf8mb4&parseTime=True&loc=Local"
​
    db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
    if err != nil {
        fmt.Println("Failed to connect to database:", err)
        return
    }
    defer db.Close()
​
    db.AutoMigrate(&User{})
​
    // 插入数据
    newUser := User{Name: "Alice", Email: "alice@example.com", Age: 25}
    db.Create(&newUser)
​
    // 查询数据
    var users []User
    db.Find(&users)
    for _, user := range users {
        fmt.Println(user.ID, user.Name, user.Email, user.Age)
    }
​
    // 更新数据
    var userToUpdate User
    db.First(&userToUpdate, 1)
    db.Model(&userToUpdate).Updates(User{Name: "Updated Name", Age: 30})
​
    // 删除数据
    var userToDelete User
    db.First(&userToDelete, 1)
    db.Delete(&userToDelete)
}

通过上述代码,就可以使用GORM连接数据库,并实现了增删改查操作。