什么是模型
官方解释:模型是具有基本Go类型、指针/别名或实现Scanner和Valuer接口的自定义类型的常规结构\n通俗话:一个结构体,携带gorm规定的标签或者实现了gorm的接口
模型有什么用
是gorm进行各种操作的基础\n一个书写良好的模型会让你对数据库的操作事半功倍
模型定义的关键点
约定:
默认情况下,GORM 使用 ID 作为主键,使用结构体名的 蛇形复数 作为表名\n字段名的 蛇形 作为列名,并使用 CreatedAt、UpdatedAt 字段追踪创建、更新时间
配置:
我们之前讲过的数据库连接时候的配置
关键设定
主键 通过标签设置
复数表名 通过通用配置配置
自定义表明(tableName)优先级最高 v2种不再支持动态变化\n在v2种动态表明 应该使用 Scopes\n\nScopes 使你可以复用通用的逻辑,共享的逻辑需要定义为 func(gorm.DB) gorm.DB 类型 (后续课程讲解)
命名策略 通过上一节讲过的通用配置中配置 NamingStrategy:一个实现了TableName接口的结构体
列名 蛇形命名 下划线
嵌入结构体
当你有一个公用的结构体想要放入其他结构中的时候 只需要以匿名结构体的形式放入 它将会自动继承所有字段 \n如果你不想用匿名结构 你可以加入 embedded 标签让其嵌入
关键标签 embeddedPrefix:’前缀’ 通过这个来区分是不是匿名结构进入的
关键标签
column : 列名称
primaryKey 主键
unique 列唯一
default 空值默认值
precision 精度 (浮点型)
size 列大小
not null 不能为空
embedded 嵌入(上面讲了)
embeddedPrefix 嵌入的前缀 上面讲了
index 索引
uniqueIndex 唯一索引
check 检查约束 mysql不支持 暂时不演示了
<- 写入权限 可以控制 创建 更改 <-:create 只能创建 <-:update 只能更新 <-:false 不让写入
-> 读取权限 ->:false 禁止读取
- 直接忽略 无读写 不创建
comment 注释 数据库描述
后续讲的 关联用标签
foreignKey 指定外键
references 指定引用
many2many 指定连接表表名
joinForeignKey 指定连接表用的外键
joinReferences 指定连接表用的引用