Go语言学习笔记:GORM 介绍及快速入门,简单查询

这篇具有很好参考价值的文章主要介绍了Go语言学习笔记:GORM 介绍及快速入门,简单查询。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Go语言学习笔记:GORM 介绍及快速入门,简单查询

前言

GORM 是一个用 GoLang 语言编写的 ORM(对象关系映射)库。它被设计为开发者友好的方式来进行数据库操作。GORM 提供了一种高级的 API 来处理数据库的 CRUD(创建、读取、更新、删除)操作,它支持主流的关系型数据库,如 MySQL、PostgreSQL、SQLite 和 Microsoft SQL Server。

文档

GORM 指南

特性

使用 GORM,开发者可以使用 Go 的结构体来表示数据库中的表,结构体字段表示表的列。GORM 利用结构体和方法来映射数据库操作,大大减少了手写 SQL 查询的需要,简化了数据处理流程。

以下是 GORM 的一些主要特点:

  • 自动迁移:能够帮助管理数据库的迁移,例如自动创建、修改表结构。

  • CRUD 接口:提供了简单的方法来进行创建、读取、更新和删除操作。

  • 关联:支持一对一、一对多和多对多等关联关系,并可以很容易地操作相关联的数据。

  • 钩子:允许在特定的操作发生前后执行自定义逻辑。

  • 事务:对数据库事务提供了支持,保持数据的完整性。

  • 范围:允许定义常用的查询,以便可以重用。

  • SQL 构建器:即使是复杂的SQL查询,也可以通过GORM提供的接口构建。

  • 日志:记录所有的SQL操作,方便开发者调试和优化。

  • 扩展性:可以通过插件扩展其功能。

安装

go get -u gorm.io/gorm
go get -u gorm.io/driver/sqlite

快速入门

例如,使用 GORM,你可以这样定义一个模型和进行查询:

// 定义一个模型
type Product struct {
  gorm.Model
  Code  string
  Price uint
}

// 初始化
db, err := gorm.Open("sqlite3", "test.db")
if err != nil {
  panic("数据库连接失败")
}
defer db.Close()

// 自动迁移
db.AutoMigrate(&Product{})

// 创建
db.Create(&Product{Code: "L1212", Price: 1000})

// 读取
var product Product
db.First(&product, 1) // 查询id为1的product
db.First(&product, "code = ?", "L1212") // 查询code为L1212的product

// 更新 - 更新product的price为2000
db.Model(&product).Update("Price", 2000)

// 删除 - 删除product
db.Delete(&product)

GORM 通过这种方式简化了数据库的操作,并使得代码更加简洁、易读和易维护

问题探索

selest操作如何做,单一值的获取、单行获取、列表获取

获取单一值

获取单一字段的值,例如,获取用户姓名,可以使用Pluck方法。

var name string
result := db.Model(&User{}).Where("id = ?", 1).Pluck("name", &name)
if result.Error != nil {
    // 处理错误
}

获取单行

获取单个记录,可以使用First或Take方法。

var user User
result := db.Where("id = ?", 1).First(&user)
if result.Error != nil {
    // 处理错误
}

获取列表

获取多个记录,可以使用Find方法。

var users []User
result := db.Where("active = ?", true).Find(&users)
if result.Error != nil {
    // 处理错误
}

User是一个模型类,与数据库表中的列匹配。db是GORM数据库连接的实例。

错误处理

错误处理非常重要。检查result.Error确定操作是否成功。
如果返回的错误是gorm.ErrRecordNotFound,表示查询没有找到任何记录。文章来源地址https://www.toymoban.com/news/detail-812977.html

到了这里,关于Go语言学习笔记:GORM 介绍及快速入门,简单查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • go语言学习笔记1

    ​ GoLang是一种静态强类型、编译型、并发型,并具有 垃圾回收 功能的编程语言;它可以在不损失应用程序性能的情况下极大的降低代码的复杂性,还可以发挥多核处理器同步多工的优点,并可解决面向对象程序设计的麻烦,并帮助程序设计师处理琐碎但重要的内存管理问题

    2024年02月12日
    浏览(50)
  • Go语言学习笔记(二)

    以下是一些推荐的Go语言学习资源的链接: Go语言教程:https://golang.org/doc/ Go by Example:Go by Example Golang Tutorials:https://golangtutorials.com/ Go语言第一课(慕课网):PHP模糊查询技术案例视频教程-慕课网 Go语言进阶教程(实验楼):极客企业版 Go语言高级编程(GitBook):谁是凶手

    2024年01月20日
    浏览(52)
  • Go语言学习笔记(三)

    教程:文档 - Go 编程语言 (studygolang.com) 在call-module-code需要注意,需要在hello目录下操作 这是一个在Go项目的模块管理中的命令。在Go的模块管理工具( go mod )中,这个命令用于修改模块依赖关系。 具体来说, go mod edit -replace example.com/greetings=../greetings  这个命令的作用是:

    2024年02月02日
    浏览(47)
  • 【Golang】一篇文章带你快速了解Go语言&为什么你要学习Go语言

    目录 1. 为什么互联网世界需要Go语言 1.1 硬件限制:摩尔定律已然失效  1.2 Go语言为并发而生 1.3 Go性能强悍 1.4 Go语言简单易学 1.4.1 语法简洁 1.4.2 代码风格统一 1.4.3开发效率高  2.Go语言的诞生与发展 2.1什么是Go语言   2.2 Go语言的诞生 2.3 Go Gopher——Go语言的吉祥物 3. 为什么

    2024年02月04日
    浏览(65)
  • Go语言学习笔记(狂神说)

    视频地址:https://www.bilibili.com/video/BV1ae41157o9 聊聊Go语言的历史-KuangStudy-文章 下面列举的是原生使用Go语言进行开发的部分项目。 Docker Docker 是一种操作系统层面的虚拟化技术,可以在操作系统和应用程序之间进行隔离,也可以称之为容器。Docker 可以在一台物理服务器上快速

    2024年02月15日
    浏览(45)
  • 《Go 语言第一课》课程学习笔记(五)

    Go 语言中有一个特殊的函数:main 包中的 main 函数,也就是 main.main,它是所有 Go 可执行程序的用户层执行逻辑的入口函数。 Go 程序在用户层面的执行逻辑,会在这个函数内按照它的调用顺序展开。 main 函数的函数原型非常简单,没有参数也没有返回值。 Go 语言要求:可执行

    2024年02月12日
    浏览(48)
  • 《Go 语言第一课》课程学习笔记(二)

    在 Go 语言中编写一个可以打印出“hello,world”的示例程序,我们只需要简单两步,一是创建文件夹,二是开始编写和运行。 通常来说,Go 不会限制我们存储代码的位置,建议创建一个可以集合所有项目的根文件夹(比如:~/goprojects),然后将所有的项目都放在里面。 对于

    2024年02月12日
    浏览(43)
  • 《Go 语言第一课》课程学习笔记(八)

    Go 语言的类型大体可分为基本数据类型、复合数据类型和接口类型这三种。 其中,我们日常 Go 编码中使用最多的就是基本数据类型,而基本数据类型中使用占比最大的又是数值类型。 Go 语言的整型,主要用来表示现实世界中整型数量等。它可以分为平台无关整型和平台相关

    2024年02月12日
    浏览(55)
  • 《Go 语言第一课》课程学习笔记(九)

    Go 语言在常量方面的创新包括下面这几点: 支持无类型常量; 支持隐式自动转型; 可用于实现枚举。 Go 语言的常量是一种在源码编译期间被创建的语法元素。这是在说这个元素的值可以像变量那样被初始化,但它的初始化表达式必须是在编译期间可以求出值来的。 Go 常量

    2024年02月12日
    浏览(44)
  • 《Go 语言第一课》课程学习笔记(十二)

    在 Go 语言中,函数是唯一一种基于特定输入,实现特定任务并可返回任务执行结果的代码块(Go 语言中的方法本质上也是函数)。 在 Go 中,我们定义一个函数的最常用方式就是使用函数声明。 第一部分是 func,Go 函数声明必须以 func 开始。 第二部分是函数名。

    2024年02月11日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包