GORM 是一个使用 Go 语言编写的,开发者友好的 ORM 库,它支持多种数据库,如 MySQL, PostgreSQL, SQLite, SQL Server 等。要使用 GORM 连接数据库,需要先安装 GORM 主库和相应的数据库驱动例如,如果要连接 MySQL 数据库,可以执行以下命令:
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql
然后,可以在的 Go 代码中导入 GORM 库和数据库驱动,并使用 gorm.Open 函数来打开一个数据库连接。例如,如果要连接到本地的 MySQL 数据库,可以编写以下代码:
import (
"gorm.io/gorm"
"gorm.io/driver/mysql"
)
func main() {
dsn := "root:password@tcp(127.0.0.1:3306)/test_db?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic("failed to connect database")
}
// use db to perform CRUD operations
}
其中,dsn 是一个数据源名称,它包含了数据库的用户名、密码、地址、端口、名称等信息。需要根据实际情况修改这些参数。gorm.Config 是一个可选的配置结构体,它可以用来设置一些 GORM 的行为和选项。
要使用 GORM 实现增删改查操作,您需要先定义一个数据模型,它是一个 Go 结构体,它对应了数据库中的一张表。例如,如果要操作一张名为 products 的表,可以定义以下结构体:
type Product struct {
gorm.Model
Title string
Code string
Price uint
}
其中,gorm.Model 是一个嵌入式结构体,它包含了一些通用的字段,如 ID, CreatedAt, UpdatedAt, DeletedAt 等。也可以自定义这些字段或添加其他字段。
然后,可以使用 db.AutoMigrate 函数来自动创建或更新数据表结构。例如:
db.AutoMigrate(&Product{})
这样就会在数据库中创建或更新一张名为 products 的表(如果想取消表名的复数形式,可以设置 db.SingularTable(true))。
接下来,就可以使用 db.Create, db.Find, db.First, db.Update, db.Delete 等函数来执行增删改查操作。例如:
// 创建记录
db.Create(&Product{Title: "iPhone", Code: "A001", Price: 5000})
// 查询记录
var product Product
db.First(&product, 1) // 根据主键查询第一条记录
db.First(&product, "code = ?", "A001") // 根据条件查询第一条记录
// 更新记录
db.Model(&product).Update("Price", 6000) // 更新单个字段
db.Model(&product).Updates(Product{Price: 6000, Code: "B001"}) // 更新多个字段
// 删除记录
db.Delete(&product, 1) // 根据主键删除记录