赞
踩
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
- 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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。