首先,我们需要安装 GORM 包。在终端中运行以下命令:
shell
go get -u gorm.io/gorm
在 Go 代码的开头导入以下包:
import (
"gorm.io/driver/mysql" // 如果你使用的是 MySQL 数据库
"gorm.io/gorm"
)
在代码中建立数据库连接,示例中使用 MySQL 数据库作为示范:
func main() {
// 连接数据库
dsn := "user:password@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic("无法连接数据库")
}
defer db.Close()
}
请确保替换 user
、 password
和 dbname
为你的实际数据库凭据和名称。
在 GORM 中,我们需要定义模型结构来映射数据库表。下面是一个示例模型结构:
type User struct {
gorm.Model
Name string
Email string
}
在这个示例中,我们定义了一个名为 User
的模型,它包含了 Name
和 Email
两个字段。
在 GORM 中,我们可以使用 AutoMigrate
方法来创建表和进行迁移。在 main
函数中添加以下代码:
func main() {
// ...
// 创建表和进行迁移
db.AutoMigrate(&User{})
}
这将根据模型结构自动创建名为 users
的表。
现在,我们可以使用 GORM 提供的方法来执行增删改查操作。以下是一些示例:
func createUser(db *gorm.DB, name, email string) {
user := User{Name: name, Email: email}
db.Create(&user)
}
func getUserByID(db *gorm.DB, id uint) (User, error) {
var user User
result := db.First(&user, id)
if result.Error != nil {
return user, result.Error
}
return user, nil
}
func updateUserEmail(db *gorm.DB, id uint, email string) error {
user, err := getUserByID(db, id)
if err != nil {
return err
}
user.Email = email
result := db.Save(&user)
return result.Error
}
func deleteUser(db *gorm.DB, id uint) error {
result := db.Delete(&User{}, id)
return result.Error
}
以下是一个完整的示例代码,包含了上述所有步骤:
package main
import (
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
type User struct {
gorm.Model
Name string
Email string
}
func main() {
// 连接数据库
dsn := "user:password@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic("无法连接数据库")
}
defer db.Close()
// 创建表和进行迁移
db.AutoMigrate(&User{})
// 创建记录
createUser(db, "John Doe", "[email protected]")
// 查询记录
user, err := getUserByID(db, 1)
if err != nil {
panic(err)
}
fmt.Println(user.Name, user.Email)
// 更新记录
err = updateUserEmail(db, 1, "[email protected]")
if err != nil {
panic(err)
}
// 删除记录
err = deleteUser(db, 1)
if err != nil {
panic(err)
}
}
func createUser(db *gorm.DB, name, email string) {
user := User{Name: name, Email: email}
db.Create(&user)
}
func getUserByID(db *gorm.DB, id uint) (User, error) {
var user User
result := db.First(&user, id)
if result.Error != nil {
return user, result.Error
}
return user, nil
}
func updateUserEmail(db *gorm.DB, id uint, email string) error {
user, err := getUserByID(db, id)
if err != nil {
return err
}
user.Email = email
result := db.Save(&user)
return result.Error
}
func deleteUser(db *gorm.DB, id uint) error {
result := db.Delete(&User{}, id)
return result.Error
}
这就是使用 GORM 连接数据库并实现增删改查操作的过程。希望对你有所帮助!