news 2026/5/11 22:25:09

Gorm 入门笔记(Go 操作 MySQL 必学)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Gorm 入门笔记(Go 操作 MySQL 必学)
会编程的土豆 • 计科学习者
🔥 个人主页: 点击访问我的主页
📘 核心专栏1: 数据结构与算法
📘 核心专栏2: LeetCode Hot 100
✨ 面包会有的,牛奶会有的,一切都会有的!

一、什么是 Gorm

Gorm 是 Go 语言里最常用的 ORM 框架。

ORM:

Object Relational Mapping 对象关系映射

简单理解:

用 Go 代码操作数据库,而不是自己手写 SQL。

比如以前:

SELECT*FROMuser;

现在可以直接写:

db.Find(&users)

这就是 ORM。


二、为什么要学 Gorm

如果纯手写 SQL:

rows,err:=db.Query("select * from user")

会非常麻烦。

尤其项目大了以后:

  • SQL 很多
  • 表很多
  • 参数很多
  • 拼接容易出错

所以开发里:

很多 Go 项目都会:

Gin + Gorm + MySQL

这是 Go 后端最经典的组合。


三、安装 Gorm

安装 Gorm:

go get gorm.io/gorm

安装 MySQL 驱动:

go get gorm.io/driver/mysql

四、第一个 Gorm 程序

1. 连接 MySQL

packagemainimport("gorm.io/driver/mysql""gorm.io/gorm")funcmain(){dsn:="root:123456@tcp(127.0.0.1:3306)/test?charset=utf8mb4&parseTime=True&loc=Local"db,err:=gorm.Open(mysql.Open(dsn),&gorm.Config{})iferr!=nil{panic(err)}println("数据库连接成功")}

五、DSN 详解

dsn:="root:123456@tcp(127.0.0.1:3306)/test?charset=utf8mb4&parseTime=True&loc=Local"

含义:

部分作用
root用户名
123456密码
127.0.0.1IP地址
3306MySQL端口
test数据库名

六、模型(Model)

Gorm 最核心的思想:

表 ↔ 结构体

数据库表:

user

对应 Go 结构体:

typeUserstruct{IDuintNamestringAgeint}

七、自动建表(重点)

db.AutoMigrate(&User{})

完整代码:

packagemainimport("gorm.io/driver/mysql""gorm.io/gorm")typeUserstruct{IDuintNamestringAgeint}funcmain(){dsn:="root:123456@tcp(127.0.0.1:3306)/test?charset=utf8mb4&parseTime=True&loc=Local"db,err:=gorm.Open(mysql.Open(dsn),&gorm.Config{})iferr!=nil{panic(err)}db.AutoMigrate(&User{})}

运行后:

数据库会自动创建:

users

表。


八、Gorm 默认规则

结构体:

typeUserstruct{}

默认会生成:

users

因为 Gorm 默认:

结构体名复数化

九、插入数据(Create)

1. 插入单条数据

user:=User{Name:"张三",Age:18,}db.Create(&user)

数据库会自动插入:

张三 18

十、查询数据(Find)

1. 查询全部数据

varusers[]User db.Find(&users)

2. 查询第一条

varuser User db.First(&user)

默认按主键查询第一条。


3. 条件查询

db.Where("name = ?","张三").Find(&users)

等价于:

SELECT*FROMusersWHEREname='张三';

十一、更新数据(Update)

1. 更新单个字段

db.Model(&user).Update("age",20)

2. 更新多个字段

db.Model(&user).Updates(User{Name:"李四",Age:22,})

十二、删除数据(Delete)

db.Delete(&user)

按条件删除

db.Where("id = ?",1).Delete(&User{})

十三、Gorm 常见方法

方法作用
Create插入
Find查询全部
First查询第一条
Where条件查询
Update更新
Delete删除

这些就是最核心的 CRUD。


十四、主键 ID

typeUserstruct{IDuint}

Gorm 默认会把:

ID

识别成主键。

并且:

自动递增

十五、结构体标签(重点)

可以通过 tag 修改字段。

typeUserstruct{IDuintNamestring`gorm:"size:50"`Ageint}

指定字段名

Namestring`gorm:"column:user_name"`

指定主键

IDuint`gorm:"primaryKey"`

不允许为空

Namestring`gorm:"not null"`

十六、时间字段

Gorm 支持自动维护时间。

typeUserstruct{IDuintNamestringCreatedAt time.Time UpdatedAt time.Time}

插入数据时:

Gorm 会自动维护:

  • 创建时间
  • 更新时间

十七、完整 CRUD 示例

packagemainimport("fmt""gorm.io/driver/mysql""gorm.io/gorm")typeUserstruct{IDuintNamestringAgeint}funcmain(){dsn:="root:123456@tcp(127.0.0.1:3306)/test?charset=utf8mb4&parseTime=True&loc=Local"db,_:=gorm.Open(mysql.Open(dsn),&gorm.Config{})db.AutoMigrate(&User{})// 插入user:=User{Name:"张三",Age:18,}db.Create(&user)// 查询varusers[]User db.Find(&users)fmt.Println(users)}

十八、Gorm 第一阶段学什么

很多人刚学 Gorm:

直接开始:

  • 联表
  • 事务
  • 关联关系
  • 钩子函数

结果:

越学越乱。

第一阶段真正要掌握:

1. 连接数据库 2. 模型结构体 3. AutoMigrate 4. CRUD 5. Where条件查询

把这些熟练:

已经能开始写接口了。


十九、总结

Gorm 的核心思想:

结构体 ↔ 数据库表

你会发现:

以后很多数据库操作:

不再需要自己写 SQL。

而是:

db.Create()db.Find()db.Where()db.Update()db.Delete()

这也是为什么:

Go Web 开发里:

Gin + Gorm

几乎成了标配。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/11 22:21:52

技术人的情绪劳动:理性思维背后的情感消耗

一、被忽视的角落:软件测试工程师的情绪劳动在软件行业的叙事里,测试工程师常被定位为“理性的把关人”——手持测试用例,穿梭于代码与需求之间,凭借严谨的逻辑揪出系统漏洞。人们习惯了他们提交Bug时的冷静分析,却鲜少…

作者头像 李华
网站建设 2026/5/11 22:21:06

2026年口碑佳的按摩椅选购指南,这几家值得考虑

2026 年口碑佳的按摩椅选购指南,这几家值得考虑一、按摩椅市场现状及痛点在当今快节奏的生活中,按摩椅成为了许多人追求舒适与健康的选择。然而,市场上的按摩椅品牌众多,功能各异,让消费者在选购时感到迷茫。据统计&am…

作者头像 李华
网站建设 2026/5/11 22:15:56

R语言逻辑回归:如何像数据科学家一样解读结果(不止是准确率和AUC)

R语言逻辑回归:如何像数据科学家一样解读结果(不止是准确率和AUC) 在医疗预测模型的案例中,一位数据科学家发现患者的年龄、血压和胆固醇水平与心脏病发作风险显著相关。但当向临床医生展示模型时,对方只问了一个问题&…

作者头像 李华
网站建设 2026/5/11 22:15:43

Navicat Premium for Mac终极重置教程:3种简单方法快速恢复试用期

Navicat Premium for Mac终极重置教程:3种简单方法快速恢复试用期 【免费下载链接】navicat_reset_mac navicat mac版无限重置试用期脚本 Navicat Mac Version Unlimited Trial Reset Script 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac …

作者头像 李华