当前位置:   article > 正文

GROM学习

GROM学习

什么是GROM

Go 语言 ORM(对象关系映射)库,它提供了一种高效、简洁的方式来操作数据库。通过将数据库表映射为 Go 语言的结构体,GORM 让数据库操作变得更加直观和类型安全。GORM 支持主流的数据库系统,包括 MySQL、PostgreSQL、SQLite 和 SQL Server 等
GORM 提供了一系列的 API 来操作 MySQL 数据库。以下是一些常用的 GORM API 操作,以及它们在操作 MySQL 时的用法:

安装和初始化

首先,你需要安装 GORM 及其 MySQL 驱动:

// 使用 go get 安装 GORM 和 MySQL 驱动

go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql
  • 1
  • 2

连接到数据库

    "gorm.io/driver/mysql"
    "gorm.io/gorm" ) ```

// 初始化数据库连接 dsn :=
"user:password@tcp(host:port)/dbname?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() 自动迁移 // 自动迁移模式,根据模型创建或修改数据库表结构 db.AutoMigrate(&YourModel{}) 创建记录 // 创建一条记录
user := User{Name: "John", Age: 30} result := db.Create(&user) if
result.Error != nil {
    panic(result.Error) } 读取记录 // 根据主键读取记录 var user User db.First(&user, "id = ?", id)

// 查询所有记录 var users []User db.Find(&users)

// 带条件的查询 db.Where("age > ?", 25).Find(&users)

// 预加载关联数据 db.Preload("Orders").Find(&users) 更新记录 // 更新记录 user :=
User{ID: 1, Name: "John Updated"} db.Save(&user)

// 更新指定字段 db.Model(&User{ID: 1}).Update("name", "John Updated") 删除记录
// 删除记录 db.Delete(&User{ID: 1})

// 软删除(如果模型有 DeletedAt 字段) db.Delete(&User{ID: 1},
"hard_delete=false") 事务操作 // 事务操作 tx := db.Begin() // 在这里执行一系列数据库操作 if
err := tx.Error; err != nil {
    tx.Rollback()
    // 处理错误 } tx.Commit() 复杂查询 // 使用原生 SQL 进行查询 rows, err := db.Raw("SELECT * FROM users WHERE age > ?", age).Rows() defer
rows.Close()

// 使用链式方法构建查询 db.Select("name, age").Where("age > ?", age).Order("age
desc").Find(&users) 关联 // 一对多关联查询 db.Preload("Comments").Find(&posts)

// 多对多关联查询 db.Joins("JOIN users ON posts.user_id =
users.id").Find(&posts) 辅助功能 // 计数 var count int64
db.Model(&User{}).Count(&count)

// 是否存在 var user User if db.Where("name = ?",
"John").First(&user).RowsAffected > 0 {
    // 用户存在 }

// 关闭日志 
db.Logger = nil
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/322788
推荐阅读
  

闽ICP备14008679号