步骤 1:安装 GORM 首先,我们需要安装 GORM 包。在终端中运行以下命令: shell go get -u gorm.io/gorm
步骤 2:导入所需的包 在 Go 代码的开头导入以下包:
import ( "gorm.io/driver/mysql" // 如果你使用的是 MySQL 数据库 "gorm.io/gorm" )
步骤 3:建立数据库连接 在代码中建立数据库连接,示例中使用 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 为你的实际数据库凭据和名称。
步骤 4:定义模型结构 在 GORM 中,我们需要定义模型结构来映射数据库表。下面是一个示例模型结构:
type User struct { gorm.Model Name string Email string }
在这个示例中,我们定义了一个名为 User 的模型,它包含了 Name 和 Email 两个字段。
步骤 5:创建表和迁移 在 GORM 中,我们可以使用 AutoMigrate 方法来创建表和进行迁移。在 main 函数中添加以下代码:
func main() { // ... // 创建表和进行迁移 db.AutoMigrate(&User{}) }
这将根据模型结构自动创建名为 users 的表。
步骤 6:实现增删改查操作 现在,我们可以使用 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", "john@example.com") // 查询记录 user, err := getUserByID(db, 1) if err != nil { panic(err) } fmt.Println(user.Name, user.Email) // 更新记录 err = updateUserEmail(db, 1, "newemail@example.com") 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 }