使用GORM连接数据库和实现增删改查操作(实践文章)|青训营

110 阅读3分钟

引言

GORM是Go语言中一个流行的ORM(对象关系映射)库,它可以帮助我们更轻松地连接数据库并进行数据操作。本文将介绍如何使用GORM连接数据库,并实现增删改查操作。我们将使用MySQL作为示例数据库。

(一)准备工作

 在使用GORM之前,我们需要安装相应的依赖包和设置数据库连接。请确保按照以下步骤进行准备:

 1.在终端中执行以下命令安装GORM:

   go get -u gorm.io/gorm

   go get -u gorm.io/driver/mysql

2.在Go项目中的代码中导入GORM和MySQL驱动:

   import (

       "gorm.io/gorm"

       "gorm.io/driver/mysql"

   )

3.设置数据库连接参数,包括数据库地址、用户名、密码和数据库名。在代码中添加以下变量:

   const (

       DBHost     = "localhost"

       DBPort     = "3306"

       DBUser     = "root"

       DBPassword = "password"

       DBName     = "mydb"

   )

4.创建数据库连接对象。在代码中添加以下代码:

   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 {

       panic("Failed to connect to database")

   }

   defer db.Close()

5.创建数据模型

 在使用GORM进行数据操作之前,我们需要定义数据模型。在本示例中,我们创建一个User结构体,代表用户模型。在代码中添加以下代码:

 type User struct {

    ID       uint   gorm:"primaryKey"

    Username string gorm:"unique"

    Password string

}

(二)实现增删改查操作

1.增加数据

要实现增加数据的操作,我们需要创建一个新的用户对象,并将其保存到数据库中。在代码中添加以下代码:

// 创建新用户

newUser := User{

    Username: "john_doe",

    Password: "password123",

}

result := db.Create(&newUser)

if result.Error != nil {

    panic("Failed to create new user")

}

fmt.Println("New user created")

2.删除数据

 要实现删除数据的操作,我们需要根据特定条件从数据库中删除用户。在代码中添加以下代码:

// 删除用户

result := db.Where("username = ?", "john_doe").Delete(&User{})

if result.Error != nil {

    panic("Failed to delete user")

}

fmt.Println("User deleted")

3.修改数据

 要实现修改数据的操作,我们需要更新特定用户的信息。在代码中添加以下代码:

 // 修改用户密码

result := db.Model(&User{}).Where("username = ?", "john_doe").Update("password", "newpassword")

if result.Error != nil {

    panic("Failed to update user")

}

fmt.Println("User updated")

4.查询数据

要实现查询数据的操作,我们需要根据特定条件从数据库中获取用户信息。在代码中添加以下代码:

// 查询用户

var user User

result := db.Where("username = ?", "john_doe").First(&user)

if result.Error != nil {

    panic("Failed to query user")

}

fmt.Println("Username:", user.Username)

fmt.Println("Password:", user.Password)

(三)完整示例代码

下面是一个完整的示例代码,展示了如何使用GORM连接数据库并实现增删改查操作:

 package main 

import (

    "fmt"

 

    "gorm.io/gorm"

    "gorm.io/driver/mysql"

const (

    DBHost     = "localhost"

    DBPort     = "3306"

    DBUser     = "root"

    DBPassword = "password"

    DBName     = "mydb"

)

type User struct {

    ID       uint   gorm:"primaryKey"

    Username string gorm:"unique"

    Password string

}

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 {

        panic("Failed to connect to database")

    }

    defer db.Close()

 

    // 创建用户表

    db.AutoMigrate(&User{})

 

    // 创建新用户

    newUser := User{

        Username: "john_doe",

        Password: "password123",

    }

    result := db.Create(&newUser)

    if result.Error != nil {

        panic("Failed to create new user")

    }

    fmt.Println("New user created")

 

    // 删除用户

    result = db.Where("username = ?", "john_doe").Delete(&User{})

    if result.Error != nil {

        panic("Failed to delete user")

    }

    fmt.Println("User deleted")

 

    // 修改用户密码

    result = db.Model(&User{}).Where("username = ?", "john_doe").Update("password", "newpassword")

    if result.Error != nil {

        panic("Failed to update user")

    }

    fmt.Println("User updated")

 

    // 查询用户

    var user User

    result = db.Where("username = ?", "john_doe").First(&user)

    if result.Error != nil {

        panic("Failed to query user")

    }

    fmt.Println("Username:", user.Username)

    fmt.Println("Password:", user.Password)