Gorm使用教程:掌握高级查询的技巧。

简介: 以上就是我们今天的旅程中所会遇到的一些有趣的Gorm查询技巧。学习这些技巧像是学着驾驶一辆全新的巴士,只要你掌握了这些,你可以在数据库的海洋中自由驾驶,轻松地转向,畅游其中。祝你在Gorm的世界中探索愉快!

来吧,朋友们,拉紧我们的安全带,之后的旅程我们要一起学习如何利用Gorm来执行一些高级的查询操作。

首先,Gorm能为你在Go语言中解决什么实际问题呢?它就像是一辆豪华的巴士,它能帮你载着你的数据从数据库站点来回穿梭。Gorm会让你的数据库操作更加简单、直观,这就像是你拥有了一把让你在Go语言与数据库之间自由航行的钥匙。

1. Preload预加载

我们旅途的第一站,就是让我们熟悉一下Preload。假设你是一个图书馆管理员,在图书馆的数据库中,Book表关联了 Author表,每本书都有一个或者多个作者。假设我们想通过书籍来查询相关的作者,我们就需要使用到Gorm的预加载。

这就像是,你把所有感兴趣的书籍拿在手里,然后你想知道这些书的作者是谁。你不需要一个个去查找,只需要使用Gorm的Preload函数:

db.Preload("Authors").Find(&books)
​

这样就把拿在手里的所有书对应的作者也都查到手了。是不是特别方便呢?

2. Joins联接

下一站,我们要赶往的是Joins。有时,我们不仅仅关心本身的数据,还关心与之关联的数据。就像是你想知道特定的书是由哪些作者写的,你就需要用到Joins。

Joins像是一个中转站,将你所需要的各个数据站点连接起来。以下的示例就像是你要从“书”这个站点前往“作者”站点,而Joins就是你的巴士或地铁:

db.Joins("Author").Find(&book)
​

3. Select选择和Scan扫描

到了Select 和 Scan这两个站,他们让你能选择你想要的数据,还可以将数据扫描到你制定的类型的变量中。

Select就像是有人堆放了很多的书籍在你面前,而你只关心其中的某一部分。而这些书籍中包含了许多细节,比如作者、页数、出版日期等。但是你只关心书籍的标题和作者,你就需要用到Select:

db.Select("Title", "Author").Find(&books)
​

Scan, 则像手中的扫描器,扫描后你可以知道书籍的细节信息,比如页数。然后将这个数据扫描到你的页数变量里,像摘取了书籍的精髓:

var pages int
db.Table("books").Select("sum(pages)").Scan(&pages)
​

4. Raw和Exec执行原生SQL

终点站,我们来到了Raw和Exec站。这两个函数让你能够在Go语言中执行原生的SQL代码。

他们的作用就像是,你已经戴上了潜水装备,想要直接跳入数据的海洋。不再经过任何中介,直接和数据库对话:

db.Raw("SELECT title, author FROM books WHERE author = ?", author).Scan(&books)
​

以上就是我们今天的旅程中所会遇到的一些有趣的Gorm查询技巧。学习这些技巧像是学着驾驶一辆全新的巴士,只要你掌握了这些,你可以在数据库的海洋中自由驾驶,轻松地转向,畅游其中。祝你在Gorm的世界中探索愉快!

目录
相关文章
gorm 一对多关系 以及预加载的用法
gorm 一对多关系 以及预加载的用法
464 0
|
数据库
gorm 事务的使用
gorm 事务的使用
494 0
|
10月前
|
人工智能 资源调度 监控
LangChain脚本如何调度及提效?
本文介绍了通过任务调度系统SchedulerX管理LangChain脚本的方法。LangChain是开源的大模型开发框架,支持快速构建AI应用,而SchedulerX可托管AI任务,提供脚本版本管理、定时调度、资源优化等功能。文章重点讲解了脚本管理和调度、Prompt管理、资源利用率提升、限流控制、失败重试、依赖编排及企业级可观测性等内容。同时展望了AI任务调度的未来需求,如模型Failover、Tokens限流等,并提供了相关参考链接。
488 29
LangChain脚本如何调度及提效?
|
10月前
|
机器学习/深度学习 存储 人工智能
浅入浅出——生成式 AI
团队做 AI 助理,而我之前除了使用一些 AI 类产品,并没有大模型相关的积累。故先补齐一些基本概念,避免和团队同学沟通起来一头雾水。这篇文章是学习李宏毅老师《生成式 AI 导论》的学习笔记。
948 27
浅入浅出——生成式 AI
|
10月前
|
SQL 监控 关系型数据库
MySQL日志分析:binlog、redolog、undolog三大日志的深度探讨。
数据库管理其实和写小说一样,需要规划,需要修订,也需要有能力回滚。理解这些日志的作用与优化,就像把握写作工具的使用与运用,为我们的数据库保驾护航。
629 23
|
9月前
|
SQL 数据库连接 Go
Go语言数据库编程:GORM 的基本使用
GORM 是 Go 语言最流行的 ORM 框架,封装了 database/sql,支持自动迁移、关联关系、事务等功能,开发体验接近高层语言的 ORM。本文介绍了 GORM 的安装与初始化、模型定义、自动迁移、基本 CRUD 操作、条件构造器、钩子函数、事务处理、日志调试等内容,帮助开发者快速掌握其使用方法。
|
10月前
|
人工智能 前端开发 Java
“最近我给有代码洁癖的同事墙裂安利了通义灵码”
通义灵码2.5.0版本现已全面支持Qwen3,采用混合专家架构,参数量仅为DeepSeek-R1的1/3,是国内首个“混合推理模型”。它在性能评测中超越了DeepSeek-R1、OpenAI-o1等国际主流模型,并全面支持MCP能力,集成国内最大MCP中文社区。作为程序员体验后发现,通义灵码可通过简单指令生成完整项目代码,包括前后端、接口调用等,大幅降低开发门槛。文中通过两个Demo展示了其强大功能:一是聚合多平台热榜数据并推送微信通知;二是基于高德和12306 MCP生成旅游攻略HTML页面。整个过程无需手动编写代码,推荐开发者尝试。
493 47
|
10月前
|
存储 人工智能 安全
赋能数字化转型的创新引擎
阿里云是全球领先的云计算与人工智能科技公司,其强大的技术实力和丰富的解决方案正深刻影响企业运营与竞争力。依托坚实的云计算基础设施,阿里云提供弹性计算、存储与网络服务,满足多样化需求。在AI与大数据领域,机器学习平台PAI及MaxCompute助力智能决策与创新应用。同时,阿里云构建全方位安全防护体系,保障数据隐私,并通过活跃的开发者社区与生态合作推动行业进步。未来,阿里云将持续加大研发投入,优化云原生技术,深化AI与大数据研究,引领数字化转型潮流,共创美好未来。
赋能数字化转型的创新引擎
|
10月前
|
机器学习/深度学习 数据采集 安全
MiMo-7B:从预训练到强化学习,解锁语言模型的推理潜能
目前,大多数成功的 强化学习 工作,包括开源研究,都依赖于相对较大的基础模型,例如 32B 模型,特别是在增强代码推理能力方面。业内普遍认为在一个小模型中同时提升数学和代码能力是具有挑战性的。然而,小米MiMo研究团队相信 RL 训练的推理模型的有效性取决于基础模型固有的推理潜力。为了完全解锁语言模型的推理潜力,不仅需要关注后训练,还需要针对推理定制预训练策略。
693 43
|
10月前
|
API
微服务引擎 MSE 及 API 网关 2025 年 4 月产品动态
微服务引擎 MSE 及 API 网关 2025 年 4 月产品动态
467 45

热门文章

最新文章