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 作为主键,使用结构体名的 蛇形复数 作为表名,字段名的 蛇形 作为列名,并使用 CreatedAt、UpdatedAt 字段追踪创建、更新时间。我们可以使用它来嵌入到模型当中,也可以用它来建立自己的模型,例子如下:
// 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是什么,以及它与数据库定义之间的关系,最后是如何与常用的数据库类型进行连接。