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

连接到数据库

    "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

你可能感兴趣的:(golang)