开发者

Go语言数据库编程GORM 的基本使用详解

目录
  • 一、安装与初始化
    • 1. 安装 GORM 及数据库驱动
    • 2. 建立数据库连接
  • 二、定义模型结构体
    • 三、自动迁移表结构
      • 四、基本 CRUD 操作
        • 1. 新增数据
        • 2. 查询数据
        • 3. 更新数据
        • 4. 删除数据
      • 五、条件构造器
        • 六、钩子函数(Hooks)
          • 七、事务处理
            • 八、日志与调试
              • 九、常用配置项
                • 十、小结

                  GORM 是 Go 语言最流行的 ORM 框架,封装了 database/sql,支持自动迁移、关联关系、事务等功能,开发体验接近于高层语言的 ORM。

                  一、安装与初始化

                  1. 安装 GORM 及数据库驱动

                  go get -u gorm.io/gorm
                  go get -u gorm.io/driver/mysql
                  # PostgreSQL 用户:
                  # go get -u gorm.io/driver/postgres

                  2. 建立数据库连接

                  package main
                  import (
                      "gorm.io/driver/mysql"
                      "gorm.io/gorm"
                      "log"
                  )
                  func main() {
                      dsn := "user:password@tcp(127.0.0.1:3306)/gormdb?charset=utf8mb4&parseTime=True&loc=Local"
                      db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
                      if err != nil {
                          log.Fatal("连接数据库失败:", err)
                      }
                      log.Println("连接成功")
                  }

                  二、定义模型结构体

                  type User struct {
                      ID       uint   `gorm:"primaryKey"`
                      Name     string
                      Email    string `gorm:"uniqueIndex"`
                      Age      int
                      CreatedAt time.Time
                  }
                  • • 使用 GORM 标签配置字段属性。
                  • • 支持自动创建 idcreated_at 等字段。

                  三、自动迁移表结构

                  db.AutoMigrate(&User{})

                  ✅ 会自动创建表,如果表存在则进行字段比对与升级(非破坏性)。

                  四、基本 CRUD 操作

                  1. 新增数据

                  user := User{Name: "Ali编程客栈ce", Ewww.devze.commail: "alice@example.com", Age: 25}
                  db.Create(&user)
                  fmt.Println("新ID:", user.ID)

                  2. 查询数据

                  var user User
                  db.First(&user, 1)     python                    // 主键查询
                  db.First(&user, "email = ?", "alice@example.com") // 条件查询
                  • • First:查询一条
                  • • Find:查询多条
                  • • Where 支持链式调用:
                  var users []User
                  db.Where("age > ?", 20).Order("age desc").Limit(10).Find(&users)

                  3. 更新数据

                  db.Model(&user).Update("Name", "Alice Updated")
                  db.Model(&user).Updates(User{Name: "NewName", Age: 28}) // 多字段

                  4. 删除数据

                  db.Delete(&user)

                  五、条件构造器

                  GORM 支持各种链式条件语句:

                  db.Where("name LIKE ?", "%alice%").Find(&users)
                  db.Where("age BETWEEN ? AND ?", 20, 30).Find(&users)
                  db.Not("name = ?", "Bob").Find(&users)

                  六、钩子函数(Hooks)

                  你可以定义方法拦截模型的创建、更新、删除行为:

                  func (u *User) BeforeCreate(tx *gorm.DB) (err error) {
                      u.Name = "【新建】" + u.Name
                      return
                  }

                  七、事务处理

                  err := db.Transaction(func(tx *gorm.DB) error {
                      if err := tx.Create(&User{Name: "TxUser"}).Error; err != nil {
                          return erTJpTBXr
                      }
                      if err := tx.Delete(&User{}, 1).Error; err != nil {
                          return err
                      }
                      return nil
                  })

                  八、日志与调试

                  GORM 支持 SQL 日志:

                  import "gorm.io/gorm/logger"
                  db, _ := gorm.Open(mysql.Open(dsn), &gorm.Config{
                      Logger: logger.Default.LogMode(logger.Info),
                  })

                  九、常用配置项

                  配置说明
                  CreateFirstFindDelete, ythonp;Update基础 CRUD
                  WhereOrderLimitOffset链式构造条件
                  AutoMigrate自动建表/更新表结构
                  Model(&Model{})设置操作对象

                  十、小结

                  功能示例
                  创建表db.AutoMigrate(&User{})
                  插入db.Create(&user)
                  查询db.Firstdb.Where().Find
                  更新db.Model().Updates()
                  删除db.Delete(&user)
                  事务db.Transaction(func)

                  到此这篇关于Go语言数据库编程:GORM 的基本使用的文章就介绍到这了,更多相关Go语言GORM使用内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

                  0

                  上一篇:

                  下一篇:

                  精彩评论

                  暂无评论...
                  验证码 换一张
                  取 消

                  最新开发

                  开发排行榜