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

88 阅读4分钟

GORM是Go语言的一款ORM(Object Relational Mapping)框架,由知名Go语言web框架Gin的作者jinzhu开发。它可以让我们用Go的方式操作数据库,大大简化了数据库操作的代码量。

GORM的主要功能包括:

  1. 数据库迁移 - 可以通过结构体自动生成表结构,无需手写SQL。

  2. CRUD操作 - 通过简单的函数调用即可实现创建、查询、更新、删除记录。

  3. 关联 - 支持一对多、多对多等关联关系处理。

  4. 事务 - 对数据库操作提供事务支持。

  5. 日志 - 记录所有数据库操作日志。

  6. 数据库交叉支持 - 支持MySQL、PostgreSQL、SQLite和Microsoft SQL Server等主流数据库。

GORM的优势在于:

  1. 使用简单,上手容易,可以大幅减少写SQL语句的工作。

  2. 增加了数据库操作的安全性,避免了手写SQL带来的问题。

  3. 能够根据结构体自动生成表结构。

  4. 有完善的文档和社区支持。

好的,关于GORM的更多介绍内容如下:

  1. 事务管理

GORM内置了事务管理功能,可以通过db.Begin()开启一个事务,在需要回滚的情况下使用tx.Rollback(),最后使用tx.Commit()提交事务。这样可以确保多个操作要么全部成功要么全部失败,保证数据一致性。

  1. 钩子函数

GORM支持钩子函数BeforeSave、BeforeCreate、AfterSave等,我们可以在调用save、create等函数前后自定义一些操作。例如可以在保存前对密码加密,在创建后触发弹性伸缩。

  1. 预加载

GORM支持预加载关联,通过db.Preload()可以预先加载关联的对象,避免lazy loading导致的多次查询问题。

  1. 复合主键

GORM支持将多个字段作为复合主键,在模型结构体中使用gorm.Model定义复合键。

  1. 自定义日志

GORM内置日志系统,我们也可以实现自定义的日志记录器,通过gorm.Config.Logger定制日志格式、记录方式等。

  1. 原生SQL

GORM支持在操作中内嵌原生SQL语句,可利用gorm.DB.Raw()方法,在自动生成的SQL之外额外执行指定的SQL。

  1. 数据库迁移

GORM可以通过gorm.Migrator接口进行数据库表结构迁移,既可以自动迁移,也支持指定字段进行迁移。

GORM还有像Soft Delete、自增ID、索引、连表查询等更多实用功能,可以提高开发效率,是Go语言重要的ORM框架。

总体来说,GORM是一个非常成熟的ORM框架,它极大地简化和规范化了数据库操作,可以帮助开发者更快速地完成项目,提高开发效率。值得Go语言项目中引入和使用。

使用 GORM 进行数据库操作:增删改查

GORM 是一个用 Go 语言实现的 ORM(Object Relational Mapping)库,它提供了一种方便的方式来操作数据库,包括连接数据库、创建表、插入数据、查询数据、更新数据、删除数据等。

在本文中,我们将展示如何使用 GORM 连接到数据库,并实现增删改查操作。

安装 GORM

首先,我们需要安装 GORM。打开终端,运行以下命令:

go get -u gorm.io/gorm

连接到数据库

首先,我们需要连接到数据库。这里我们假设你已经有一个 MySQL 数据库,数据库名为 testdb ,用户名为 root ,密码为 password ,运行在本地 localhost 上的 3306 端口。

package main

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

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

创建数据模型

我们需要定义一个 Go 结构体,以映射数据库中的表。

type User struct {
	gorm.Model
	Name  string
	Email string `gorm:"type:varchar(100);uniqueIndex"`
}

创建表

使用 GORM,我们可以自动根据数据模型创建表。

db.AutoMigrate(&User{})

插入数据

使用 Create 方法,我们可以插入新的数据。

user := User{Name: "John", Email: "john@example.com"}
result := db.Create(&user) // 通过数据的指针来创建
if result.Error != nil {
	panic(result.Error)
}

查询数据

使用 FirstFindTake 等方法,我们可以查询数据。

var user User
db.First(&user, 1) // 查询 id 为 1 的用户
db.First(&user, "name = ?", "John") // 查询 name 为 John 的第一个用户

更新数据

使用 SaveUpdates 方法,我们可以更新数据。

db.First(&user)
user.Name = "Jane"
db.Save(&user) // Save 会更新所有的字段,即使它们没有改变

db.Model(&user).Updates(User{Name: "Jane", Email: "jane@example.com"}) // Updates 只会更新非零值的字段

删除数据

使用 Delete 方法,我们可以删除数据。

db.Delete(&user, 1) // 删除 id 为 1 的用户

以上就是使用 GORM 进行数据库操作的基本步骤。实际上,GORM 提供了许多其他的功能,例如事务、预加载、关联查询等,你可以查看 GORM 官方文档 ↗ 学习更多。