Gorm连接mysql增删改查

1.Gorm增删改查 

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() 方法来查询数据,可以根据实际需求进行修改。

 2.&gorm.Config{}配置

&gorm.Config{}是GORM库中的一个结构体,用于配置GORM的行为。它提供了一系列选项,可以控制GORM如何处理数据库连接、日志记录、表名规则、模型定义等方面的行为。

要使用&gorm.Config{},需要在创建GORM数据库连接时将其作为选项传递给Open函数。例如:

import (
    "gorm.io/driver/mysql"
    "gorm.io/gorm"
)

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 {
    // 处理错误
}

在上面的例子中,&gorm.Config{}作为第二个参数传递给了Open函数,表示使用默认的配置选项。如果需要自定义一些选项,则可以在&gorm.Config{}中设置相应的字段值,例如:

db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
    NamingStrategy: schema.NamingStrategy{
        TablePrefix:   "prefix_",  // 表名前缀
        SingularTable: true,       // 表名使用单数形式
    },
    Logger: logger.Default.LogMode(logger.Info),  // 日志记录器
})

在上面的例子中,我们自定义了表名前缀和表名使用单数形式的命名规则,并且启用了Info级别的日志记录器。当然,还有很多其他选项可以设置,具体可以参考GORM文档。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用 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()` 方法来查询数据,可以根据实际需求进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值