Skip to content

附录A:GORM 常用标签速查表 ​

字段定义标签 ​

标签用途示例
column:name自定义列名gorm:"column:user_name"
type:sql_type指定数据库类型gorm:"type:varchar(200)"
size:n列大小gorm:"size:255"
precision:n小数总位数gorm:"precision:10"
scale:n小数位数gorm:"scale:2"
serializer:jsonJSON序列化gorm:"serializer:json"
serializer:unixtimeUnix时间戳gorm:"serializer:unixtime"
serializer:gobGob序列化gorm:"serializer:gob"
embedded嵌入结构体gorm:"embedded"
embeddedPrefix:p嵌入字段前缀gorm:"embeddedPrefix:audit_"

约束与索引标签 ​

标签用途示例
primaryKey主键gorm:"primaryKey"
autoIncrement自增gorm:"autoIncrement"
not null非空gorm:"not null"
default:val默认值gorm:"default:18"
unique唯一约束gorm:"unique"
uniqueIndex唯一索引gorm:"uniqueIndex"
uniqueIndex:name命名唯一索引gorm:"uniqueIndex:idx_email"
index普通索引gorm:"index"
index:name命名索引gorm:"index:idx_name"
check:exprCHECK约束gorm:"check:age > 0"
comment:text列注释gorm:"comment:用户名"

读写控制标签 ​

标签含义
<-可读可写(默认)
<-:false禁止写入
<-:create只允许创建时写入
<-:update只允许更新时写入
->只读
->:false禁止读取
-完全忽略
-:all所有操作忽略
-:migration迁移忽略

关联标签 ​

标签用途
foreignKey:Field指定外键字段
references:Field指定引用字段
many2many:table多对多中间表名
joinForeignKey:Field中间表中指向当前表的外键
joinReferences:Field中间表中指向关联表的外键
polymorphic:Field多态关联
polymorphicValue:val多态类型值
constraint:OnUpdate:CASCADE,...外键约束行为

Go类型 ↔ MySQL类型映射 ​

Go 类型默认 MySQL 类型
int, uintBIGINT
int8TINYINT
int16SMALLINT
int32INT
int64BIGINT
float32FLOAT
float64DOUBLE
stringVARCHAR(255)
boolTINYINT(1)
time.TimeDATETIME(3)
[]byteLONGBLOB
*time.TimeDATETIME(3) NULL

常用链式方法速查 ​

方法说明
db.Where()条件查询
db.Not()否定条件
db.Or()OR条件
db.Order()排序
db.Limit()限制行数
db.Offset()偏移
db.Select()选择字段
db.Omit()排除字段
db.Group()分组
db.Having()分组过滤
db.Joins()连接查询
db.Preload()预加载关联
db.Scopes()作用域
db.Debug()打印SQL
db.Raw()原生查询
db.Exec()原生执行
db.Scan()扫描结果
db.Pluck()提取单列
db.Count()计数
db.Distinct()去重

把零散知识,整理成可以反复走的路。