什么是模型

  1. 官方解释:模型是具有基本Go类型、指针/别名或实现ScannerValuer接口的自定义类型的常规结构\n通俗话:一个结构体,携带gorm规定的标签或者实现了gorm的接口

模型有什么用

  1. gorm进行各种操作的基础\n一个书写良好的模型会让你对数据库的操作事半功倍

模型定义的关键点

约定:

  1. 默认情况下,GORM 使用 ID 作为主键,使用结构体名的 蛇形复数 作为表名\n字段名的 蛇形 作为列名,并使用 CreatedAtUpdatedAt 字段追踪创建、更新时间

配置:

  1. 我们之前讲过的数据库连接时候的配置


自己通过标签和接口进行的配置

关键设定

  1. 主键 通过标签设置


复数表名 通过通用配置配置
自定义表明(tableName)优先级最高 v2种不再支持动态变化\n在v2种动态表明 应该使用 Scopes\n\nScopes 使你可以复用通用的逻辑,共享的逻辑需要定义为 func(gorm.DB) gorm.DB 类型 (后续课程讲解)
命名策略 通过上一节讲过的通用配置中配置 NamingStrategy:一个实现了TableName接口的结构体
列名 蛇形命名 下划线

嵌入结构体

  1. 当你有一个公用的结构体想要放入其他结构中的时候 只需要以匿名结构体的形式放入 它将会自动继承所有字段 \n如果你不想用匿名结构 你可以加入 embedded 标签让其嵌入


关键标签 embeddedPrefix:’前缀’ 通过这个来区分是不是匿名结构进入的

关键标签

  1. column 列名称


primaryKey 主键
unique 列唯一
default 空值默认值
precision 精度 (浮点型)
size 列大小
not null 不能为空
embedded 嵌入(上面讲了)
embeddedPrefix 嵌入的前缀 上面讲了
index 索引
uniqueIndex 唯一索引
check 检查约束 mysql不支持 暂时不演示了
<- 写入权限 可以控制 创建 更改 <-:create 只能创建 <-:update 只能更新 <-:false 不让写入
-> 读取权限 ->:false 禁止读取
- 直接忽略 无读写 不创建
comment 注释 数据库描述
后续讲的 关联用标签
foreignKey 指定外键
references 指定引用
many2many 指定连接表表名
joinForeignKey 指定连接表用的外键
joinReferences 指定连接表用的引用