Go GORM简介

GORM(Go Object-Relational Mapping)是一个用于Go语言的ORM库,它提供了一种简单、优雅的方式来操作数据库。GORM支持多种数据库,包括MySQL、PostgreSQL、SQLite和SQL Server。以下是GORM的一些主要特性

  1. 全功能ORM:GORM支持全功能的ORM操作,包括关联、事务、迁移、批量插入、预加载、复合主键等。
  2. 开箱即用:GORM的设计目标是开箱即用,它提供了许多默认行为,使得开发者可以快速上手。
  3. 链式操作:GORM支持链式操作,这使得代码更加简洁和易读。
  4. 自动迁移:GORM可以自动迁移数据库,这意味着你可以通过代码来创建、更新和删除数据库表。
  5. Hooks:GORM支持在执行数据库操作前后执行自定义的Hook函数。
  6. 预加载:GORM支持预加载,这意味着你可以一次性查询出关联的数据,而不需要多次查询。
  7. 事务:GORM支持数据库事务,你可以很容易地开始、提交或回滚一个事务。
  8. 日志:GORM提供了详细的日志,你可以看到每一次的数据库操作。
  9. 扩展性:GORM提供了许多接口,你可以通过实现这些接口来扩展GORM的功能。
  10. 测试:GORM提供了方便的测试工具,你可以很容易地为你的代码编写测试。

以下是一些基本的GORM操作:

1. 安装GORM

在Go项目中,你可以使用以下命令来安装GORM:

$ go get -u gorm.io/gorm

2. 连接到数据库

GORM支持多种类型的数据库,例如MySQL,SQLite,PostgreSQL等。下面是一个连接MySQL数据库的示例:

package mainimport ("gorm.io/driver/mysql""gorm.io/gorm"
)func main() {dsn := "user:password@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
}

3. 定义模型

在GORM中,你可以通过定义Go结构体来创建数据库表。例如:

type Product struct {gorm.ModelCode  stringPrice uint
}

然后,你可以使用 AutoMigrate 函数来自动创建表:

db.AutoMigrate(&Product{})

4. 创建记录

使用 Create 函数可以在数据库中创建新的记录:

db.Create(&Product{Code: "D42", Price: 100})

5. 读取记录

GORM提供了多种方法来查询数据库中的记录。例如:

// 获取第一条记录,按主键排序
var product Product
db.First(&product, 1) // 查询id为1的product// 获取最后一条记录
db.Last(&product)// 获取所有记录
var products []Product
db.Find(&products)// 使用条件查询
db.Where("price = ?", 100).First(&product)

6. 更新记录

你可以使用 Save 或 Updates 函数来更新数据库中的记录:

// 更新product的price
db.Model(&product).Update("Price", 200)// 更新多个字段
db.Model(&product).Updates(Product{Price: 200, Code: "F42"}) // 非零字段
db.Model(&product).Updates(map[string]interface{}{"Price": 200, "Code": "F42"})

7. 删除记录

使用 Delete 函数可以删除数据库中的记录:

db.Delete(&product, 1)

以上是GORM的基本使用方法,其他可以参考GORM官方文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/177984.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

提升企业网络安全的得力助手——EventLog Analyzer网络日志管理

在当今数字化时代,企业的网络安全问题变得尤为重要。为了更好地应对日益增多的威胁和安全漏洞,企业需要一种高效的网络日志管理工具,EventLog Analyzer便是其中一款卓越的解决方案。 EventLog Analyzer EventLog Analyzer是一款综合性的网络…

C#通过NPOI 读、写Excel数据;合并单元格、简单样式修改;通过读取已有的Excel模板另存为文件

文章目录 1 需要引用的DLL2 调用示例3 工具类 1 需要引用的DLL 2 调用示例 public static void WriteExcel() {string templateFile "F:\12312\excel.xlsx"; // 文件必须存在string outFile "F:\12312\" DateTime.Now.ToString("yyyyMMddHHmmssff…

逆向 tg 发送图片

开发工具 工具名称工具类型说明AndroidStuduo编辑工具开发工具jadxjava工具将apk解成java项目xposed插件工具插件tg版本9.7.5 分析源码的点: 发送图片的点 获取sendMessageParams 获取TLRPC$TL_photo 回调 实现 public void sendImg(String path, String…

NI自动化测试系统用电必备攻略,电源规划大揭秘

就像使用电脑之前需接通电源一样,自动化测试系统的电源选择也是首当其冲的问题,只不是这个问题更复杂。 比如,应考虑地理位置因素,因为不同国家或地区的公共电网所提供的线路功率有所不同。在电源布局和设备选型方面,有…

《深入理解计算机系统》学习笔记 - 第三课 - 位,字节和整型

Lecture 03 Bits,Bytes, and Integer count 位,字节,整型 文章目录 Lecture 03 Bits,Bytes, and Integer count 位,字节,整型运算:加,减,乘,除加法乘法取值范围乘法结果 使用无符号注…

Python Web包就业服务

还在等什么,加入我们,包就业

几何教学工具 Sketchpad几何画板 mac软件特色

Sketchpad几何画板 for Mac是一款适用于macOS系统的几何教学工具,用户可以在其画板上进行各种几何图形的绘制、演示,帮助教师了解学生的思路和对概念的掌握程度。此外,Sketchpad更深层次的功能则是可以用来进行几何交流、研究和讨论&#xff…

机柜浪涌保护器行业应用解决方案

机柜浪涌保护器是一种用于保护机柜内电子设备免受雷电或其他瞬时过电压影响的装置,它可以有效地限制或引导电涌电流,避免设备损坏或数据丢失。机柜浪涌保护器广泛应用于通信、电力、工业控制、医疗、安防等领域,是保障机柜系统安全稳定运行的…

centos服务器扩容

centos服务器扩容 我的情况是,原服务器是一个80g磁盘,管理员又追加了120G到这块磁盘上,需要把这120G重新追加使用。 请确认你遇到的情况是否和我初始截图一致,再往下看,免得浪费时间与精力 服务器中有120G尚未使用&…

JavaEE(SpringMVC)期末复习(选择+填空+解答)

文章目录 JavaEE期末复习一、单选题:二、多选题三、填空题四、解答 JavaEE期末复习 一、单选题: 1.Spring的核⼼技术是( A )? A依赖注入 B.JdbcTmplate C.声明式事务 D.资源访问 Spring的核心技术包括依赖注入&#x…

运维 | 四层和七层负载均衡介绍

关注: CodingTechWork 负载均衡 负载均衡介绍 概念 负载均衡是建立在现有的网络结构之上,提供一种廉价且透明的方式进行网络设备和服务器带宽的扩展,从而增加吞吐量,加强应用服务的数据处理能力,有效提高网络的灵活性和可用性。…

深度视觉目标跟踪进展综述

1 引言 目标跟踪旨在基于初始帧中指定的感兴趣目标( 一般用矩形框表示) ,在后续帧中对该目标进行持续的定位。 基于深度学习的跟踪算法,采用的框架包括相关滤波器、分类式网络、双路网络等。 处理跟踪任务的角度,分为基于匹配思路的双路网…

操作系统——操作系统概论s

一、操作系统基本概念 1 操作系统定义 操作系统是裸机上的第一层软件,它是对硬件系统功能的首次扩充, 用以填补人与机器之间的鸿沟。 OS定义:操作系统是控制和管理计算机系统内各种硬件和软件资源,有效地组织多道程序运行的系统软…

W2311283-可燃气体监测仪怎么监测燃气管道

可燃气体监测仪怎么有效监测燃气管道 燃气管道遍布于城市地下各处,作为城市生命线的一部分,一旦燃气管网出现泄露问题便是牵一发而动全身,城市的整体安全也会受到威胁。但是如何才能科学管理和监测燃气管网呢? 燃气管网监测系统便…

「我在淘天做技术」迈步从头越 - 阿里妈妈广告智能决策技术的演进之路

作者:妙临、霁光、玺羽 一、前言 在线广告对于大多数同学来说是一个既熟悉又陌生的技术领域。「搜广推」、「搜推广」等各种组合耳熟能详,但广告和搜索推荐有本质区别:广告解决的是“媒体-广告平台-广告主”等多方优化问题,其中媒…

视频文案怎么写,媒介盒子支招

近几年短视频成为风口,各行各业都想分一杯羹,但是一头热的你,是否知道短视频的相关文案怎么写呢?正所谓兵马未动,文案先行,一个合适的文案是上热门的秘密武器,今天媒介盒子就来和大家聊聊:视频…

Doris-Routine Load(二十七)

例行导入(Routine Load)功能为用户提供了一种自动从指定数据源进行数据导入的功能。 适用场景 当前仅支持从 Kafka 系统进行例行导入,使用限制: (1)支持无认证的 Kafka 访问,以及通过 SSL 方…

小新 Air-14 2021 Intel处理器ITL版(82FF)原厂Win11系统

链接:https://pan.baidu.com/s/1EkqpdGcixCNER5uP5yIc4Q?pwddm1d 提取码:dm1d lenovo联想小新Air14笔记本2021款【82FF】原装出厂Windows11系统镜像ISO文件 系统自带所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办公软件、联想电脑管家等…

手机如何去图片水印?试试这三种方法

手机如何去图片水印?去水印已然成为了自媒体从业者必备技能之一,无论是工作或生活中经常遇到图片/视频上带有水印,非常影响整体观感,网上去水印方法又很多,如果你是小白,这篇文章将提供给你三个实用去水印的…

草图大师sketchup道路怎么快速种树?

草图大师sketchup道路怎么快速种树?草图大师中的道路图纸想要在道路两旁种树,该怎么快速给道路种树呢?下面我们就来看看详细的教程,需要的朋友可以参考下 草图大师sketchup中想要快速种树,该怎么种多棵树呢&#xff1…