Gorm模型定义
Gorm模型定义
模型是标准的 struct,由 Go 的基本数据类型、实现了 Scanner
和 Valuer
接口的自定义类型及其指针或别名组成
定义一张表
type Student struct {
ID uint // 默认使用ID作为主键
Name string
Email *string // 使用指针是为了存空值
}
常识:小写属性是不会生成字段的
自动生成表结构
// 可以放多个
DB.AutoMigrate(&Student{})
AutoMigrate
的逻辑是只新增,不删除,不修改(大小会修改)
例如将Name修改为Name1,进行迁移,会多出一个name1的字段
生成的表结构如下
CREATE TABLE `f_students` (`id` bigint unsigned AUTO_INCREMENT,`name` longtext,`email` longtext,PRIMARY KEY (`id`))
默认的类型太大了,所以我们要修改大小
修改大小
我们可以使用gorm的标签进行修改
有两种方式
Name string `gorm:"type:varchar(12)"`
Name string `gorm:"size:2"`
字段标签
type
定义字段类型
size
定义字段大小
column
自定义列名
primaryKey
将列定义为主键
unique
将列定义为唯一键
default
定义列的默认值
not null
不可为空
embedded
嵌套字段
embeddedPrefix
嵌套字段前缀
comment
注释
多个标签之前用 ;
连接
type StudentInfo struct {
Email *string `gorm:"size:32"` // 使用指针是为了存空值
Addr string `gorm:"column:y_addr;size:16"`
Gender bool `gorm:"default:true"`
}
type Student struct {
Name string `gorm:"type:varchar(12);not null;comment:用户名"`
UUID string `gorm:"primaryKey;unique;comment:主键"`
Info StudentInfo `gorm:"embedded;embeddedPrefix:s_"`
}
// 建表语句
CREATE TABLE `students` (
`name` varchar(12) NOT NULL COMMENT '用户名',
`uuid` varchar(191) UNIQUE COMMENT '主键',
`s_email` varchar(32),
`s_y_addr` varchar(16),
`s_gender` boolean DEFAULT true,
PRIMARY KEY (`uuid`)
)
本文作者:春游去动物园
本文链接:https://www.cnblogs.com/chunyouqudongwuyuan/p/17982517
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?