GORM的简单入门教程(二)|青训营

70 阅读1分钟

1.GORM的结构标签

  • Column: 指定列的名称
  • Type: 指定列的类型
  • Size: 指定列的大小,默认是255
  • PRIMARY_KEY: 指定一个列作为主键
  • UNIQUE: 指定一个唯一的列
  • DEAFAULT: 指定一个默认的值
  • PRECISION: 指定列的数据不为空
  • NOT NULL: 指定一个列的数据是否自增
  • AUTO_INCREMENT: 创建带或不带名称的索引,同名创建复合索引
  • INDEX: 类似索引,创建一个唯一索引
  • UNIQUE_INDEX: 将struct设置为embedded
  • EMBEDDED: 设置嵌入式结构的前缀名称
  • EMBEDDED_PREFIX: 忽略这些字段

2.GORM约定

GORM 倾向于约定优于配置,默认情况下,GORM 使用 ID 作为主键,使用结构体名的 蛇形复数 作为表名,字段名的 蛇形 作为列名,并使用 CreatedAtUpdatedAt 字段追踪创建、更新时间。我们可以使用它来嵌入到模型当中,也可以用它来建立自己的模型,例子如下:

// gorm.Model的定义
type Model struct {
  ID        uint           `gorm:"primaryKey"`
  CreatedAt time.Time
  UpdatedAt time.Time
  DeletedAt gorm.DeletedAt `gorm:"index"`
}


// 将字段‘ID’、‘CreateAt’、‘UpdateAt’、‘DeleteAt’注入到‘user’模型中
type User struct {
  gorm.Model
  Name string
}

// 声明 gorm.model 模型
type User struct {
  ID int
  Name string
}

3.连接数据库

GORM 官方支持的数据库类型有:MySQL, PostgreSQL, SQLite, SQL Server 和 TiDB。以MySQL为例:

import (
  "gorm.io/driver/mysql"
  "gorm.io/gorm"
)

func main() {
  // 参考 https://github.com/go-sql-driver/mysql#dsn-data-source-name 获取详情
  dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
  db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
}

总结: 本文主要作为学习gorm框架的入门,了解到了gorm是什么,以及它与数据库定义之间的关系,最后是如何与常用的数据库类型进行连接。