每日一库:GORM简介
1.iota简介2.go generate命令简介3.golang uuid库介绍4.gRPC基本教程5.protolator简介6.Govulncheck v1.0.0 发布了!
7.每日一库:GORM简介
8.Go泛型简介9.Go 1.21发布!10.Golang zip压缩文件读写操作11.本地搭建playground12.zap自定义日志级别13.Gorm日志设置14.gin启动https支持15.Go Plugin介绍16.Golang漏洞管理17.可以丢掉123456了18.如何优雅地退出程序19.PGO前瞻20.go多版本管理21.openAI发布v0.2.0了22.Gin中间件开发23.Fabric区块链浏览器(1)24.每日一库:Memcache25.protojson简介26.每日一库:gosec27.Fabric区块链浏览器(2)28.每日一库:fsnotify简介29.gRPC with JWT30.embed简介31.Fabric区块链浏览器(3)32.每日一库:pprof简介33.go 1.21:cmp34.完全可复制、经过验证的 Go 工具链35.PGO in Go 1.2136.Fabric 2.x 智能合约开发记录37.为不断增长的Go生态系统扩展gopls38.每日一库:lumberjack -- 日志轮换和管理39.2023-04-26-微信安全模式下消息解析40.WASI support in Go41.每日一库:Prometheus42.如何实现流量控制和熔断降级?43.消息队列 - RabbitMQ44.Go 1.22 中的 For 循环45.设计模式之单例模式46.每日一库:使用Viper处理Go应用程序的配置47.使用 gopkg.in/yaml.v3 解析 YAML 数据48.在Go中如何实现并发49.解析类型参数50.设计模式之工厂模式51.每日一库:cobra 简介52.slices in Go 1.2153.go defer简介54.slice简介55.Golang Map底层实现简述56.Go 如何实现多态57.查找数组中第K大的元素58.go中的内存逃逸59.数组 vs. 切片60.队列(Queue):先进先出(FIFO)的数据结构61.go 中如何实现定时任务62.go 中的循环依赖63.Go中字符串处理:fmt.Sprintf与string.Builder的比较64.理解Go中的零值65.go 上下文:context.Context66.go中异常处理流程67.Go实现网络代理68.Why gRPC ?69.Go:条件控制语句70.Go 获取 IP 地址71.Golang并发控制方式有几种?72.Golang面试:泛型73.LRU算法简介74.MRU算法实现75.ARC算法实现76.Go语言中的交互式CLI开发:survey库简介77.C如何调用GoGORM(Go Object-Relational Mapping)是一个用于Go语言的ORM库,它提供了一种简单、优雅的方式来操作数据库。GORM支持多种数据库,包括MySQL、PostgreSQL、SQLite和SQL Server。以下是GORM的一些主要特性:
- 全功能ORM:GORM支持全功能的ORM操作,包括关联、事务、迁移、批量插入、预加载、复合主键等。
- 开箱即用:GORM的设计目标是开箱即用,它提供了许多默认行为,使得开发者可以快速上手。
- 链式操作:GORM支持链式操作,这使得代码更加简洁和易读。
- 自动迁移:GORM可以自动迁移数据库,这意味着你可以通过代码来创建、更新和删除数据库表。
- Hooks:GORM支持在执行数据库操作前后执行自定义的Hook函数。
- 预加载:GORM支持预加载,这意味着你可以一次性查询出关联的数据,而不需要多次查询。
- 事务:GORM支持数据库事务,你可以很容易地开始、提交或回滚一个事务。
- 日志:GORM提供了详细的日志,你可以看到每一次的数据库操作。
- 扩展性:GORM提供了许多接口,你可以通过实现这些接口来扩展GORM的功能。
- 测试:GORM提供了方便的测试工具,你可以很容易地为你的代码编写测试。
以下是一些基本的GORM操作:
1. 安装GORM
在Go项目中,你可以使用以下命令来安装GORM:
$ go get -u gorm.io/gorm
2. 连接到数据库
GORM支持多种类型的数据库,例如MySQL,SQLite,PostgreSQL等。以下是一个连接到MySQL数据库的示例:
package main import ( "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.Model Code string Price 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://gorm.io/docs/index.html。

声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
author: mengbin
blog: mengbin
github: mengbin92
cnblogs: 恋水无意
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程