当前位置: 首页 > news >正文

GORM 标签详解(数据库字段映射核心)

很多人刚学 GORM会觉得gorm:primaryKeygorm:indexgorm:not null这些东西像“魔法字符串”。其实它本质上是在告诉 GORM数据库这一列应该怎么创建也就是表结构规则一、结构体标签本质是什么例如typeUserstruct{Usernamestringgorm:column:username}这里gorm:...本质是给 GORM 的说明书。告诉它这个字段 在数据库里叫什么 有什么限制 怎么建立索引二、结构体标签重点标签场景数据流向json:xxx前后端交互前端 ↔ Go结构体gorm:column:xxx数据库映射Go结构体 ↔ MySQLtoml:xxx/ini:xxx配置文件读取配置文件 → Go结构体三、gorm 标签到底在干什么例如typeUserstruct{IDuintgorm:primaryKeyUsernamestringgorm:uniqueIndex;not null}GORM看到后会自动生成CREATETABLEusers(idBIGINTPRIMARYKEYAUTO_INCREMENT,usernameVARCHAR(255)NOTNULLUNIQUE);也就是说gorm 标签 本质是在控制 SQL四、primaryKey主键示例IDuintgorm:primaryKey五、主键是什么主键本质每条数据的唯一身份证例如idusername1zhangsan2lisi这里id 就是主键六、主键三个核心特性1. 唯一不能重复不能两个用户都是 id12. 不能为空每条数据必须有主键。3. 一张表通常只有一个主键因为身份证只能有一个七、GORM 里的 primaryKey 默认自增例如IDuintgorm:primaryKey插入时db.Create(user)你不用写ID:1MySQL会自动1 2 3 4增长。八、uniqueIndex唯一索引示例Usernamestringgorm:uniqueIndex九、作用值不能重复例如用户名。十、为什么用户名必须唯一如果两个用户都叫 zhangsan登录就乱了。所以需要唯一索引十一、底层 SQLGORM会生成UNIQUEINDEX数据库自动保证不能重复十二、index普通索引示例Phonestringgorm:index十三、索引到底是什么重点很多新人只知道WHERE 查询但真正决定查询速度的是索引十四、没有索引会怎样例如SELECT*FROMusersWHEREphone123如果没索引数据库只能一行一行找这叫全表扫描非常慢。十五、有索引会怎样有索引后数据库类似查目录直接定位。速度会快非常多。十六、为什么索引像书目录例如字典。你不会第一页开始翻而是查目录索引本质就是数据库目录十七、普通索引 vs 唯一索引类型能重复吗查询快吗index能快uniqueIndex不能快十八、not null不能为空示例Usernamestringgorm:not null十九、作用数据库会限制这一列必须有值不能NULL二十、为什么需要 not null例如用户名。你总不能用户名为空否则系统逻辑会炸。二十一、type 指定字段类型示例Phonestringgorm:type:char(11)或者Usernamestringgorm:type:varchar(20)二十二、char 和 varchar 区别重点很多新人这里会懵。char固定长度例如char(11)永远占11位varchar可变长度例如varchar(20)最多20。实际多少占多少。二十三、什么时候用 char例如手机号长度固定11位适合char(11)二十四、什么时候用 varchar例如用户名长度不固定适合varchar二十五、default 默认值示例Statusintgorm:default:1二十六、作用插入数据时如果没传自动使用默认值二十七、真实场景例如用户状态1 正常 0 封禁注册时默认1二十八、comment 注释示例Usernamestringgorm:comment:用户名二十九、作用只给开发人员看。数据库里会显示字段说明但不影响功能三十、多个标签同时写真实开发经常这样typeUserstruct{IDuintgorm:primaryKeyUsernamestringgorm:type:varchar(20);uniqueIndex;not null;comment:用户名Phonestringgorm:type:char(11);indexStatusintgorm:default:1}三十一、分号是什么意思多个规则例如gorm:type:varchar(20);not null表示varchar(20) 不能为空三十二、GORM 自动建表很多时候db.AutoMigrate(User{})GORM会根据结构体 gorm标签自动生成表。三十三、真实项目最常见字段真实开发几乎都有typeUserstruct{IDuintgorm:primaryKeyUsernamestringgorm:type:varchar(20);uniqueIndex;not nullPasswordstringgorm:type:varchar(255);not nullCreatedAt time.Time UpdatedAt time.Time DeletedAt gorm.DeletedAtgorm:index}三十四、CreatedAt 和 UpdatedAtGORM会自动维护创建时间 更新时间三十五、DeletedAt软删除DeletedAt gorm.DeletedAt表示软删除删除时不是DELETE而是UPDATEdeleted_atNOW()三十六、为什么真实项目大量使用软删除因为很多数据不能真删例如订单用户日志需要可恢复三十七、gorm 标签真正核心思想你一定要理解gorm 标签 本质是在描述数据库表结构它不是Go语法而是数据库规则三十八、最后总结GORM 标签本质控制数据库字段规则最核心标签标签作用primaryKey主键uniqueIndex唯一索引index普通索引not null非空type指定字段类型default默认值comment注释真正核心理解结构体 Go里的数据模型 gorm标签 数据库规则 GORM 自动帮你生成SQL
http://www.rkmt.cn/news/1372154.html

相关文章:

  • 94、【Agent】【OpenCode】edit 工具提示词(参数内容)
  • 93、【Agent】【OpenCode】edit 工具提示词(二)
  • 如何免费将PPTX转换为HTML?探索纯JavaScript解决方案的完整指南
  • 如何在5分钟内创建专业级LRC歌词文件:零基础入门指南
  • 从入门到投产:12个可直接复用的行业级提示词模板,含金融/医疗/教育场景
  • gwasglue:你的GWAS数据分析瑞士军刀,让复杂遗传分析变得简单
  • 机器学习防御组合冲突检测:Def\Con原理与工程实践指南
  • 2026 成都型钢批发哪家好?四川盛世钢联全品类一站式供应更靠谱 - 四川盛世钢联营销中心
  • 四会靠谱的汽车贴膜店 - 资讯纵览
  • DeepSeek长上下文能力解密(官方未公开的context-aware attention调度机制)
  • 2026快手去水印视频解析在线提取实测:6种方法横评,这4款小程序一步到位 - 科技热点发布
  • 2026 成都钢板批发哪家好?四川盛世钢联全品类一站式供应更靠谱 - 四川盛世钢联营销中心
  • 塔塔网申|edge浏览器投简历插件,解锁校招极速投递 - 小塔-皂荚花
  • 仅剩47家机构掌握的ChatGPT短视频文案生成黑盒技术:动态人设锚定+地域热词注入+完播率预判模型
  • 【DeepSeek高并发防护核心机密】:仅限白名单用户可见的8种限流组合策略(附YAML配置模板+Prometheus监控看板)
  • 化学教学平台——数据可视化与电化学AI动画推演
  • 深圳地区值得推荐的小程序开发公司(专注企业数字化转型服务) - 软件测评师
  • 2026年5月甘南地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 检测回收中心
  • StrongSwan ESP加密边界解析:Wireshark解密失败的根源与实战还原
  • 2026年去水印在线工具怎么选?6种方法实测横评,这4款免费工具真的够用了 - 科技热点发布
  • 2026扭力传感器品牌排行榜,广东犸力以高稳定性抗干扰能力赢得市场广泛赞誉 - 品牌速递
  • 2026年5月大兴安岭松岭地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 检测回收中心
  • 2026年5月甘南迭部地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 检测回收中心
  • 力扣之路03—无重复字符的最长子串 - NO
  • 免费在线去水印软件推荐(2026保姆级教程):别让水印毁了你的好素材
  • 2026 海南封关红利全面释放!海南初创公司 靠谱财税代办四强推荐 - 资讯纵览
  • 明日方舟桌宠Ark-Pets显卡优化配置指南:3步实现流畅桌面动画
  • 深度测评!200元以内平价颈霜红黑榜:lefufu、凡士林与极博士该怎么选? - 资讯纵览
  • 2026年实测:视频号视频怎么下载到手机相册?安卓苹果完整避坑指南 - 科技热点发布
  • 2026年5月成都武侯地区黄金回收白银铂金回收门店推荐TOP1 地址及联系方式 - 检测回收中心