GORM是一个Go语言编写的ORM库,它简化了连接数据库的过程,并提供了丰富的API以帮助开发人员进行CRUD(增删改查)操作。
在开始使用GORM前,首先需要在Go代码中添加GORM的引用。 可以使用如下命令进行下载:
go get -u gorm.io/gorm
在编写代码之前,需要先定义一个数据库模型以映射到数据库表。如下定义了一个User模型:
type User struct {
gorm.Model
Name string
Email string
Age int
}
一个模型通常是一个结构体,字段对应数据库表中的列。在上述例子中,该User结构体是嵌套了一个gorm.Model的,并自带创建时间、更新时间等常用数据库列。gorm.Model是一个内置的基础模型,它提供了一些基本的数据库列(例如ID、CreatedAt、UpdatedAt等)。
接下来就是连接数据库,GORM支持多种类型的连接(如MySQL、PostgreSQL等)。连接数据库需要先定义数据库连接参数, 可以使用如下代码:
import "gorm.io/driver/mysql"
dsn := "username:password@tcp(hostname:port)/database?charset=utf8mb4&parseTime=True"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
其中dsn是构建连接池的关键参数。在dsn 中,需要指定用户名和密码、数据库主机名(或IP地址)、数据库端口和要连接到的数据库名称。设置 "charset=utf8mb4、parseTime=True" 可以将字符集设置为utf8mb4,并且可以扫描时间戳类型的数据库列。
它还必须通过参数&gorm.Config{}传递给连接。在初始化GORM之后,GORM已经可以连接到指定的数据库中。
一个简单的增删改查程序如下:
func main() {
// 连接数据库
dsn := "username:password@tcp(hostname:port)/database_name?charset=utf8mb4&parseTime=True"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic("failed to connect database")
}
defer func() {
sqlDB, err := db.DB()
if err != nil {
panic(err)
}
sqlDB.Close()
}()
// 自动迁移
err = db.AutoMigrate(&User{})
if err != nil {
panic(err)
}
// 添加用户
user := User{Name: "Tom", Email: "tom@example.com", Age: 20}
result := db.Create(&user)
if result.Error != nil {
panic(result.Error)
}
fmt.Println(user.ID)
// 根据ID查询用户
var u User
result = db.First(&u, user.ID)
if result.Error != nil {
panic(result.Error)
}
fmt.Println(u.Name, u)
// 更新用户信息
result = db.Model(&u).Update("age", 25)
if result.Error != nil {
panic(result.Error)
}
fmt.Println(u.Age)
// 删除用户
result = db.Delete(&u)
if.Error != nil {
panic(result.Error)
}
}
该程序包括连接数据库,添加新的用户到数据库,查询指定ID的用户,更新用户的年龄和删除用户。例如:
- 创建用户:
user := User{Name: "Tom", Email: "tom@example.com", Age: 20} db.Create(&user) - 查询用户:
var user User db.First(&user, 1) // 查询ID为1的 - 更新用户:
db.Model(&user).Update("Age", 25) - 删除用户:
db.Delete(&user)
在GORM中,许多常见的数据库操作都是使用链式结构的调用。例如,在查询中使用“First”或“Find”方法,将条件链装在“Where”之后,并使用“Update”或“Delete”方法更新或删除记录。
总的来说,连接和管理数据库流程非常简单,同时提供了许多方便的API,可以帮助您轻松地执行各种操作。使用GORM的优点之一是只依赖于少量的配置,可以让开发人员专注于程序的逻辑和业务。