使用 GORM 连接数据库及实现 CRUD 操作
引言
GORM 是 Go 语言中一个流行的 ORM(对象关系映射)库,它提供了一种方便的方式来处理数据库操作,使得开发者可以用 Go 的方式来操作数据库。本文将介绍如何使用 GORM 连接数据库,并实现基本的增删改查(CRUD)操作。
环境准备
在开始之前,请确保你已经安装了 Go 语言环境和所需的数据库(本文以 MySQL 为例)。同时,你需要安装 GORM 库和 MySQL 驱动。
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql
连接数据库
首先,你需要创建一个数据库和用户,然后在 Go 代码中配置连接。
1. 创建数据库和用户
在 MySQL 中执行以下命令创建数据库和用户:
CREATE DATABASE example_db;
CREATE USER 'gorm_user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON example_db.* TO 'gorm_user'@'localhost';
FLUSH PRIVILEGES;
2. 配置 GORM 连接
在 Go 代码中,你可以这样配置 GORM 连接:
package main
import (
"gorm.io/driver/mysql"
"gorm.io/gorm"
"log"
)
const (
host = "localhost"
port = 3306
user = "gorm_user"
password = "password"
dbname = "example_db"
)
var (
dsn = user + ":" + password + "@tcp(" + host + ":" + port + ")/" + dbname + "?charset=utf8mb4&parseTime=True&loc=Local"
)
func main() {
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
log.Fatal("failed to connect database:", err)
}
// 迁移 schema
db.AutoMigrate(&Product{})
}
实现 CRUD 操作
1. 定义模型
定义一个简单的模型 Product 来表示数据库中的表:
type Product struct {
gorm.Model
Code string
Price uint
}
2. 创建(Create)
使用 Create 方法添加新记录:
func createProduct(db *gorm.DB) {
product := Product{Code: "D42", Price: 100}
result := db.Create(&product) // 使用 & 传递指针
if result.Error != nil {
log.Fatal(result.Error)
}
}
3. 读取(Read)
使用 Find 或 First 方法查询记录:
func findProduct(db *gorm.DB) {
var product Product
db.First(&product, 1) // 根据 id 查询
if product.Code == "" {
log.Println("Product not found")
} else {
log.Println(product)
}
}
4. 更新(Update)
使用 Save 或 Updates 方法更新记录:
func updateProduct(db *gorm.DB) {
var product Product
db.First(&product, 1)
product.Price = 200
result := db.Save(&product)
if result.Error != nil {
log.Fatal(result.Error)
}
}
5. 删除(Delete)
使用 Delete 方法删除记录:
func deleteProduct(db *gorm.DB) {
var product Product
result := db.Delete(&product, 1) // 根据 id 删除
if result.Error != nil {
log.Fatal(result.Error)
}
}
总结
本文介绍了如何使用 GORM 连接数据库并实现 CRUD 操作。GORM 提供了一种简洁的方式来处理数据库操作,使得开发者可以更加专注于业务逻辑。通过定义模型、配置连接和实现 CRUD 操作,你可以快速地在 Go 项目中集成数据库功能。希望这篇文章能帮助你更好地理解和使用 GORM。