GORM基础及使用 | 豆包MarsCode AI刷题

43 阅读2分钟

本文介绍GORM这一ORM库的基础知识及常见操作。

什么是 GORM?

GORM 是一个强大的 ORM 库,支持多种数据库(如 MySQL、PostgreSQL、SQLite 和 SQL Server)。它通过结构体映射数据库表格,使得开发者可以通过 Go 语言的结构体与数据库进行交互。GORM 提供了许多方便的 API,使得常见的数据库操作(如查询、插入、更新、删除等)更加简洁。

GORM的安装及配置

安装:打开终端,在Go 项目中执行以下命令(这里使用 MySQL 作为数据库):

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

配置:1.导入 GORM 和 MySQL 驱动; 2.使用 gorm.Open 函数连接数据库

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

var db *gorm.DB
var err error

func main() {
    // 配置数据库连接
    dsn := "username:password@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
    db, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
}

GORM的常见操作

定义结构体

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

gorm.Model 包含了表的基础字段,如 ID、CreatedAt、UpdatedAt 和 DeletedAt。User 结构体表示我们的数据库表,包含两个字段:Name 和 Email。

增(Create)操作

首先创建一个 User 结构体实例,然后使用 db.Create(&user) 将其插入数据库。如果插入成功,user.ID 会被自动赋值。

result := db.Create(&user)

查(Read)操作

使用 GORM 的 Find、First 或 Last 等方法来进行数据查询。 db.Find(&users) 会查询所有用户并将结果保存在 users 切片中。 db.First(&user, id) 会查找指定 ID 的用户,如果没有找到,则返回错误。

改(Update)操作

通过 GORM 的 Save实现:

db.Save(&user)

Save 方法会根据记录的主键判断是插入新数据还是更新已有数据。如果是新记录,它会执行插入操作;如果是已有记录,它会执行更新操作。

通过Updates 方法来实现:

db.Model(&User{}).Where("id = ?", id).Update("Name", newName)

删(Delete)操作

删除操作通过 Delete 方法来实现。你可以根据主键或其他条件删除记录。

总结

在本文中,介绍了如何使用 GORM 连接数据库并实现基本的增、删、改、查(CRUD)操作。通过 GORM,Go 开发者能够更加便捷地与数据库进行交互,避免了手动编写 SQL 语句的繁琐,同时提供了很多高级特性,如自动迁移、关联查询、预加载等。比如事务,GORM 提供了强大的事务管理功能,允许开发者在数据库操作中使用事务来确保数据一致性和原子性。通过 db.Begin() 开启事务,db.Commit() 提交事务,db.Rollback() 回滚事务。在我们的项目中,可以利用好GORM 的灵活性和易用性,并多加尝试其丰富的扩展生态。