Go语言学习之旅 | 青训营笔记

61 阅读2分钟

本篇文章将讲解gorm框架,它是一个用Go语言实现的对象关系映射(ORM)库,它可以让我们方便地操作数据库,而不需要直接编写SQL语句。gorm框架支持多种数据库,如MySQL, PostgreSQL, SQLite, SQL Server等。

  • 安装和导入gorm框架和数据库驱动包
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql

我们可以使用go get命令来安装gorm框架和相应的数据库驱动包,上述例子是操作MySQL数据库时需要安装的两个包。

  • 还需要在代码中导入这两个包

    import (
      "gorm.io/gorm"
      "gorm.io/driver/mysql"
    )
    
  • 定义数据模型和表名。我们可以使用struct类型来定义数据模型,每个struct类型对应一张数据库表,每个struct字段对应一个表字段。我们可以通过在struct字段后面添加标签来指定表字段的名称、类型、约束等属性,eg:

    type User struct {
      ID int64 `gorm:"primary_key"`
      Name string `gorm:"size:50;not null"`
      Age int `gorm:"size:3"`
      Email string `gorm:"type:varchar(50);unique_index"`
    }
    

    这个User类型对应一张users表,有四个字段:id, name, age, email。我们也可以通过定义一个TableName方法来指定struct类型对应的表名,如果不定义,默认是struct类型的复数形式,eg:

    func (u User) TableName() string {
      return "users"
    }
    
  • 连接数据库和自动迁移表结构。我们可以使用gorm.Open函数来连接数据库,需要传入一个数据库连接串(DSN)和一个配置参数,eg:

    dsn := "root:123456@tcp(127.0.0.1:3306)/test_db?charset=utf8&parseTime=True&loc=Local"
    db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
    if err != nil {
      panic("连接数据库失败")
    }
    

    这里我们连接了一个名为test_db的MySQL数据库。我们也可以使用db.AutoMigrate函数来自动创建或更新表结构,根据我们定义的数据模型,eg:

    db.AutoMigrate(&User{})
    
  • 增删改查

    • 使用db.Create函数来插入一条或多条数据,需要传入一个或多个struct类型的指针,eg:

      user := User{Name: "Tom", Age: 20, Email: "Tom@example.com"}
      db.Create(&user)
      
    • 使用db.Find函数来查询所有数据,需要传入一个struct类型的切片的指针,eg:

      var users []User
      db.Find(&users)
      

      这里我们查询了所有用户数据,并保存在users切片中。如果我们只想查询一条数据,可以使用db.Firstdb.Last函数,需要传入一个struct类型的指针,并且可以指定查询条件,eg:

      var user User
      db.First(&user, "name = ?", "Tom")
      
    • 使用db.Model函数来指定要更新的表,并使用db.Updatedb.Updates函数来指定要更新的字段和值,eg:

      db.Model(&User{}).Where("name = ?", "Tom").Update("age", 21)
      
    • 使用db.Delete函数,并指定要删除的表和条件,eg:

      db.Delete(&User{}, "name = ?", "Tom")