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 一对多关系 以及预加载的用法
523 0
|
数据库
gorm 事务的使用
gorm 事务的使用
621 0
|
运维 监控 安全
阿里巴巴DevOps实践指南(十九)| 监管控一体化运维
阿里巴巴应用运维监管控一体化的建设随着业务形态和技术架构还在不断地探索和发展,本文主要介绍了应用运维监管控一体化建设的背景和思路。我们以应用为中心,从应用监控管角度出发,通过全视角监控实时掌握应用的运行状态,通过高效发布部署和灵活的运维编排对应用进行安全变更,通过智能化运维和安全防护实现应用的高级防护。
阿里巴巴DevOps实践指南(十九)| 监管控一体化运维
|
Web App开发 关系型数据库 数据库
用PostgreSQL 做实时高效 搜索引擎 - 全文检索、模糊查询、正则查询、相似查询、ADHOC查询
用PostgreSQL 做实时高效 搜索引擎 - 全文检索、模糊查询、正则查询、相似查询、ADHOC查询作者digoal 日期2017-12-05 标签PostgreSQL , 搜索引擎 , GIN , ranking , high light , 全文检索 , 模糊查询 , 正则查询 , 相似查询 , ADHOC查询 背景字符串搜索是非常常见的业务需求,它包括: 1、前缀+模糊查询。
13472 1
|
SQL 数据库连接 Go
Go语言数据库编程:GORM 的基本使用
GORM 是 Go 语言最流行的 ORM 框架,封装了 database/sql,支持自动迁移、关联关系、事务等功能,开发体验接近高层语言的 ORM。本文介绍了 GORM 的安装与初始化、模型定义、自动迁移、基本 CRUD 操作、条件构造器、钩子函数、事务处理、日志调试等内容,帮助开发者快速掌握其使用方法。
|
自然语言处理 Rust Java
通义灵码编程智能体深度评测(Qwen3模型+终端操作+MCP工具调用实战)
通义灵码作为阿里云推出的智能编程解决方案,凭借Qwen3模型与MCP平台的协同,在代码生成、终端操作与工具链调用方面展现强大能力。本文从真实开发场景出发,评测其在多语言代码理解、自动化工作流及复杂工程任务中的表现,结合性能与成本数据,揭示其在提升开发效率与系统集成方面的工程价值。
1155 1
|
Go 数据库
Go语言之GORM框架(四)——预加载,关联标签与多态关联,自定义数据类型与事务(完结篇)
Go语言之GORM框架(四)——预加载,关联标签与多态关联,自定义数据类型与事务(完结篇)
518 0
|
开发框架 前端开发 Go
eino — 基于go语言的大模型应用开发框架(二)
本文介绍了如何使用Eino框架实现一个基本的LLM(大语言模型)应用。Eino中的`ChatModel`接口提供了与不同大模型服务(如OpenAI、Ollama等)交互的统一方式,支持生成完整响应、流式响应和绑定工具等功能。`Generate`方法用于生成完整的模型响应,`Stream`方法以流式方式返回结果,`BindTools`方法为模型绑定工具。此外,还介绍了通过`Option`模式配置模型参数及模板功能,支持基于前端和用户自定义的角色及Prompt。目前主要聚焦于`ChatModel`的`Generate`方法,后续将继续深入学习。
2096 7
|
存储 开发框架 Devops
eino — 基于go语言的大模型应用开发框架(一)
Eino 是一个受开源社区优秀LLM应用开发框架(如LangChain和LlamaIndex)启发的Go语言框架,强调简洁性、可扩展性和可靠性。它提供了易于复用的组件、强大的编排框架、简洁明了的API、最佳实践集合及实用的DevOps工具,支持快速构建和部署LLM应用。Eino不仅兼容多种模型库(如OpenAI、Ollama、Ark),还提供详细的官方文档和活跃的社区支持,便于开发者上手使用。
3212 8
|
Dubbo Java 测试技术
提升API文档品质:Swagger annotations (注解)使用教程
Swagger 提供的注解集是其框架中定义 API 规范和文档的重要工具。这些注解在代码里标注重要部分,为 Swagger 的解析工作铺路,进而生成详尽的 API 文档。开发者编写的注释能够被转换成直观的文档,并展现API端点、参数和响应等信息。这不仅提升了开发人员对 API 运作的理解与沟通,也使得测试和集成过程更加顺畅。

热门文章

最新文章