引言
GORM 是 Go 语言中一个强大的 ORM(对象关系映射)库,用于与数据库进行交互。本文将介绍如何使用 GORM 连接数据库,并展示如何执行常见的数据库操作,包括增加(Create)、删除(Delete)、修改(Update)、查询(Read)等。
1. 连接数据库
首先,我们需要导入 GORM 包并连接到数据库。GORM 支持多种数据库,如 MySQL、PostgreSQL、SQLite 等。在本示例中,我们将连接到一个SQLite数据库。
import (
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
func main() {
// 连接到 SQLite 数据库
db, err := gorm.Open(sqlite.Open("tuotuo79-test.db"), &gorm.Config{})
if err != nil {
panic("无法连接到数据库")
}
defer db.Close()
}
在以上示例中,我们使用 sqlite.Open 打开了一个 SQLite 数据库连接,并创建了一个名为 tuotuo79-test.db 的数据库文件。务必在使用完数据库后关闭连接,以释放资源。
2. 创建数据表和模型
在 GORM 中,数据表对应着 Go 语言中的结构体(Struct)。我们需要定义一个结构体,用于描述数据库中的表结构,并通过 GORM 的迁移(Migration)功能创建数据表。
// 定义模型
type User struct {
ID uint // 主键
Name string // 用户名
Age uint // 年龄
}
func main() {
// 连接到 SQLite 数据库
db, err := gorm.Open(sqlite.Open("tuotuo79-test.db"), &gorm.Config{})
if err != nil {
panic("无法连接到数据库")
}
defer db.Close()
// 自动创建 User 表
db.AutoMigrate(&User{})
}
以上代码定义了一个 User 结构体,它对应数据库中的 users 表。通过 db.AutoMigrate(&User{}) 可以自动创建或更新数据库表,以保持与结构体的一致性。
3. 插入数据
要将数据插入到数据库中,我们可以创建一个新的 User 对象并使用 Create 方法。
func main() {
// 连接到 SQLite 数据库
db, err := gorm.Open(sqlite.Open("tuotuo79-test.db"), &gorm.Config{})
if err != nil {
panic("无法连接到数据库")
}
defer db.Close()
// 自动创建 User 表
db.AutoMigrate(&User{})
// 插入数据
user := User{Name: "Tuotuo", Age: 30}
db.Create(&user)
}
以上示例中,我们创建了一个名为 Tuotuo 年龄为 25 的用户,并使用 db.Create(&user) 将其插入到数据库中。
4. 查询数据
GORM 提供了强大的查询功能。以下是一个查询所有用户的示例:
func main() {
// 连接到 SQLite 数据库
db, err := gorm.Open(sqlite.Open("tuotuo79-test.db"), &gorm.Config{})
if err != nil {
panic("无法连接到数据库")
}
defer db.Close()
// 自动创建 User 表
db.AutoMigrate(&User{})
// 查询所有用户
var users []User
db.Find(&users)
for _, user := range users {
fmt.Printf("ID: %d, Name: %s, Age: %d\n", user.ID, user.Name, user.Age)
}
}
以上代码使用 db.Find(&users) 查询数据库中的所有用户,并将结果存储在 users 切片中,然后遍历并打印每个用户的信息。
5. 更新数据
要更新数据库中的数据,可以使用 Save 方法。
func main() {
// 连接到 SQLite 数据库
db, err := gorm.Open(sqlite.Open("tuotuo79-test.db"), &gorm.Config{})
if err != nil {
panic("无法连接到数据库")
}
defer db.Close()
// 自动创建 User 表
db.AutoMigrate(&User{})
// 查询用户
var user User
db.First(&user, 1) // 查询 ID 为 1 的用户
fmt.Printf("原始信息:ID: %d, Name: %s, Age: %d\n", user.ID, user.Name, user.Age)
// 更新用户信息
db.Model(&user).Update("Age", 35)
// 查询并打印更新后的用户信息
db.First(&user, 1)
fmt.Printf("更新后信息:ID: %d, Name: %s, Age: %d\n", user.ID, user.Name, user.Age)
}
在上述示例中,我们首先查询了ID为1的用户信息,然后使用 db.Model(&user).Update("Age", 35) 更新了用户的年龄,并再次查询并打印用户的信息以验证更新是否成功。
6. 删除数据
要删除数据库中的数据,可以使用 Delete 方法。
func main() {
// 连接到 SQLite 数据库
db, err := gorm.Open(sqlite.Open("tuotuo79-test.db"), &gorm.Config{})
if err != nil {
panic("无法连接到数据库")
}
defer db.Close()
// 自动创建 User 表
db.AutoMigrate(&User{})
// 删除用户
var user User
db.First(&user, 1) // 查询 ID 为 1 的用户
fmt.Printf("将删除用户信息:ID: %d, Name: %s, Age: %d\n", user.ID, user.Name, user.Age)
// 执行删除操作
db.Delete(&user)
// 查询并打印删除后的用户信息
db.First(&user, 1)
if user.ID == 0 {
fmt.Println("用户已删除")
}
}
在以上示例中,我们首先查询了ID为1的用户信息,然后使用 db.Delete(&user) 删除了用户,最后再次查询并打印用户信息以验证删除成功。
结论
本文介绍了如何使用 GORM 连接数据库,并实现了增加、删除、修改、查询等常见的数据库操作。通过 GORM,我们可以轻松地管理数据库操作,使得与数据库的交互更加方便和高效。