GORM连接mysql | 青训营

61 阅读2分钟

1. 前言

在开发应用程序时,与数据库进行交互是一项常见任务。GORM 是一个强大的 Go 语言 ORM 库,它提供了简单易用的 API,帮助我们连接数据库并执行数据库操作,如增删改查。

2. 准备工作

首先,确保你已经安装了 Go 语言开发环境,并在项目中导入 GORM 包。你可以使用以下命令安装 GORM:

 go get -u gorm.io/gorm

另外,还需要根据你所使用的数据库类型(如 MySQL、PostgreSQL、SQLite 等)导入相应的数据库驱动程序。

3. 连接数据库

在使用 GORM 连接数据库之前,需要先配置数据库连接。以下是一个连接 MySQL 数据库的示例:

 import (
     "gorm.io/gorm"
     "gorm.io/driver/mysql"
 )
 ​
 func main() {
     // 连接数据库
     dsn := "user:password@tcp(localhost:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
     db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
     if err != nil {
         panic("Failed to connect to database")
     }
     
     // 在这里进行数据库操作...
     
     // 关闭数据库连接
     db.Close()
 }

请根据实际情况修改连接字符串中的用户名、密码、数据库名称和数据库地址等参数。

4. 定义数据模型

在 GORM 中,我们使用结构体来定义数据模型。每个模型通常对应数据库中的一张表。

 type User struct {
     gorm.Model
     Name  string
     Email string
 }

上述代码定义了一个名为 User 的模型,包含 NameEmail 两个字段。gorm.Model 是 GORM 提供的一个包含常用字段的模型结构体,用于处理 ID、创建时间、更新时间等字段。

5. 数据库操作

5.1 创建数据

使用 GORM 创建数据非常简单。以下是一个示例:

 // 创建数据
 user := User{Name: "Alice", Email: "alice@example.com"}
 result := db.Create(&user)
 if result.Error != nil {
     // 处理错误
 } else {
     // 创建成功
 }

5.2 查询数据

GORM 提供了多种查询方式。以下是一些示例:

  • 查询所有数据:
 var users []User
 result := db.Find(&users)
 if result.Error != nil {
     // 处理错误
 } else {
     // 处理查询结果
 }
  • 根据条件查询数据:
 var user User
 result := db.Where("name = ?", "Alice").First(&user)
 if result.Error != nil {
     // 处理错误
 } else {
     // 处理查询结果
 }

5.3 更新数据

GORM 提供了多种方式更新数据。以下是一个示例:

 // 更新数据
 var user User
 result := db.First(&user)
 if result.Error != nil {
     // 处理错误
 } else {
     user.Email = "newemail@example.com"
     result = db.Save(&user)
     if result.Error != nil {
         // 处理错误
     } else {
         // 更新成功
     }
 }

5.4 删除数据

GORM 使删除数据变得简单。以下是一个示例:

 // 删除数据
 var user User
 result := db.First(&user)
 if result.Error != nil {
     // 处理错误
     } else {
         result = db.Delete(&user)
         if result.Error != nil {
             // 处理错误
         } else {
             // 删除成功
         }
     }
 }