写一个gorm连接mysql增删改查示例,并给出注释
时间: 2024-05-06 14:19:04 浏览: 130
以下是一个使用 GORM 连接 MySQL 并进行增删改查的示例代码,已经注释说明每个步骤的作用。
```go
package main
import (
"fmt"
"gorm.io/driver/mysql" // 导入 MySQL 驱动
"gorm.io/gorm" // 导入 GORM
)
type User struct { // 定义 User 结构体
gorm.Model // 继承 GORM 模型结构体,包含 ID、CreatedAt、UpdatedAt、DeletedAt 字段
Name string
Age int
}
func main() {
// 1. 连接 MySQL 数据库
dsn := "root:password@tcp(127.0.0.1:3306)/test?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() // 程序结束时关闭数据库连接
// 2. 自动迁移数据表
db.AutoMigrate(&User{}) // 自动创建数据表
// 3. 插入数据
user := User{Name: "Tom", Age: 18}
result := db.Create(&user) // 插入数据
if result.Error != nil {
panic("failed to create user")
}
fmt.Println(user.ID) // 输出新插入数据的 ID
// 4. 查询数据
var users []User
db.Find(&users) // 查询所有数据
fmt.Println(users)
var user2 User
db.First(&user2, 1) // 根据主键查询单条数据
fmt.Println(user2)
var user3 User
db.Where("name = ?", "Tom").First(&user3) // 根据条件查询单条数据
fmt.Println(user3)
// 5. 更新数据
db.Model(&user).Update("Age", 20) // 更新数据
fmt.Println(user)
// 6. 删除数据
db.Delete(&user) // 删除数据
}
```
注意,这里的 `dsn` 是连接 MySQL 数据库的字符串,其中包含了用户名、密码、主机地址、端口号、数据库名等信息,需要根据实际情况进行修改。同时,这里使用了 GORM 的链式查询语法,通过 `db.Find()` 和 `db.Where()` 方法来查询数据,可以根据实际需求进行修改。
阅读全文