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

68 阅读2分钟

GORM 是一个使用 Go 语言编写的,开发者友好的 ORM 库,它支持多种数据库,如 MySQL, PostgreSQL, SQLite, SQL Server 等。要使用 GORM 连接数据库,需要先安装 GORM 主库和相应的数据库驱动例如,如果要连接 MySQL 数据库,可以执行以下命令:

go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql

然后,可以在的 Go 代码中导入 GORM 库和数据库驱动,并使用 gorm.Open 函数来打开一个数据库连接。例如,如果要连接到本地的 MySQL 数据库,可以编写以下代码:

import (
  "gorm.io/gorm"
  "gorm.io/driver/mysql"
)

func main() {
  dsn := "root:password@tcp(127.0.0.1:3306)/test_db?charset=utf8mb4&parseTime=True&loc=Local"
  db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
  if err != nil {
    panic("failed to connect database")
  }
  // use db to perform CRUD operations
}

其中,dsn 是一个数据源名称,它包含了数据库的用户名、密码、地址、端口、名称等信息。需要根据实际情况修改这些参数。gorm.Config 是一个可选的配置结构体,它可以用来设置一些 GORM 的行为和选项。

要使用 GORM 实现增删改查操作,您需要先定义一个数据模型,它是一个 Go 结构体,它对应了数据库中的一张表。例如,如果要操作一张名为 products 的表,可以定义以下结构体:

type Product struct {
  gorm.Model
  Title string
  Code  string
  Price uint
}

其中,gorm.Model 是一个嵌入式结构体,它包含了一些通用的字段,如 IDCreatedAtUpdatedAtDeletedAt 等。也可以自定义这些字段或添加其他字段。

然后,可以使用 db.AutoMigrate 函数来自动创建或更新数据表结构。例如:

db.AutoMigrate(&Product{})

这样就会在数据库中创建或更新一张名为 products 的表(如果想取消表名的复数形式,可以设置 db.SingularTable(true))。

接下来,就可以使用 db.Createdb.Finddb.Firstdb.Updatedb.Delete 等函数来执行增删改查操作。例如:

// 创建记录
db.Create(&Product{Title: "iPhone", Code: "A001", Price: 5000})

// 查询记录
var product Product
db.First(&product, 1) // 根据主键查询第一条记录
db.First(&product, "code = ?", "A001") // 根据条件查询第一条记录

// 更新记录
db.Model(&product).Update("Price", 6000) // 更新单个字段
db.Model(&product).Updates(Product{Price: 6000, Code: "B001"}) // 更新多个字段

// 删除记录
db.Delete(&product, 1) // 根据主键删除记录