GORM 学习笔记
什么是 GORM
GORM 是一个基于 Go 语言的 ORM(Object-Relational Mapping)框架,它可以将 Go 语言的结构体和数据库中的表进行映射,实现对数据库的 CRUD(Create, Read, Update, Delete)操作。
GORM 提供了丰富的功能,包括关联查询、事务处理、预加载、自动迁移等,可以大大简化数据库操作的复杂度,提升开发效率。
安装 GORM
使用 GORM 首先需要安装它。GORM 可以通过以下命令进行安装:
go get -u gorm.io/gorm
同时,我们还需要根据具体的数据库类型选择适合的驱动程序进行安装。例如,如果要连接 MySQL 数据库,可以使用以下命令安装 MySQL 驱动程序:
go get -u gorm.io/driver/mysql
连接数据库
连接数据库是使用 GORM 进行数据库操作的第一步。GORM 支持多种数据库类型,包括 MySQL、PostgreSQL、SQLite、SQL Server 等。
在 GORM 中,我们可以通过 Open 方法连接数据库,并指定数据库类型和连接参数。例如,连接 MySQL 数据库的代码如下:
import (
"gorm.io/gorm"
"gorm.io/driver/mysql"
)
func main() {
dsn := "user:password@tcp(127.0.0.1:3306)/db_name?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic("failed to connect database")
}
defer db.Close()
// TODO: 数据库操作
}
其中,dsn 是连接字符串,包含了数据库用户名、密码、地址、数据库名称等信息。mysql.Open 方法可以指定连接的数据库类型为 MySQL。&gorm.Config{} 是 GORM 的配置选项,这里暂时使用默认配置。
定义模型
在 GORM 中,我们需要定义模型来映射数据库中的表。模型是一个 Go 语言结构体,可以定义表的名称、字段名、数据类型、约束条件等信息。
例如,我们要定义一个用户模型,可以使用以下代码:
type User struct {
gorm.Model
Name string
Age int
Email string
}
其中,gorm.Model 是 GORM 提供的默认模型,包含了 ID、CreatedAt、UpdatedAt、DeletedAt 四个字段。我们还可以定义其他字段,例如上面的 Name、Age、Email 字段。
数据库操作
定义好模型后,我们就可以使用 GORM 进行数据库操作了。GORM 提供了丰富的 API,可以进行增删改查、关联查询、事务处理等操作。
以下是一些常用的数据库操作示例:
创建记录
user := User{Name: "Alice", Age: 18, Email: "alice@example.com"}
result := db.Create(&user)
查询记录
var user User
result := db.Where("name = ?", "Alice").First(&user)
更新记录
result := db.Model(&user).Update("age", 20)
删除记录
result := db.Delete(&user)
关联查询
type Order struct {
gorm.Model
UserID uint
Amount float64
}
db.AutoMigrate(&Order{})
db.Create(&Order{UserID: user.ID, Amount: 100.0})
var orders []Order
db.Model(&user).Association("Orders").Find(&orders)