当前位置: 首页 > ds >正文

【Go语言】ORM(对象关系映射)库

github.com/jinzhu/gorm 是 Go 语言中一个非常流行的 ORM(对象关系映射)库,用于简化与关系型数据库的交互。以下是关于它的关键信息:


核心特点

  1. 全功能 ORM

    • 支持主流数据库:MySQL、PostgreSQL、SQLite、SQL Server 等。
    • 通过结构体(Struct)映射数据库表,自动处理数据类型转换。
  2. 链式 API
    提供流畅的链式调用方法,例如:

    db.Where("name = ?", "jinzhu").First(&user)
    
  3. 自动迁移
    可根据模型自动创建或更新数据库表结构:

    db.AutoMigrate(&User{})
    
  4. 关联支持
    简化一对多、多对多等关联关系操作:

    type User struct {gorm.ModelCreditCards []CreditCard // 一对多
    }
    
  5. 事务与钩子

    • 支持数据库事务。
    • 提供 BeforeSaveAfterCreate 等生命周期钩子。
  6. 查询构建器
    支持复杂查询、预加载(Preload)、原生 SQL 等。


状态与替代方案

  • 原仓库已归档:原作者 Jinzhu 已停止维护 gorm(v1 版本),并推荐使用新版 gorm.io/gorm(即 GORM v2)。
  • GORM v2 改进
    • 性能优化。
    • 支持上下文(Context)。
    • 更清晰的 API 设计。

基本使用示例

package mainimport ("gorm.io/gorm""gorm.io/driver/sqlite"
)type User struct {gorm.ModelName stringAge  int
}func main() {db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})if err != nil {panic("连接数据库失败")}// 自动迁移db.AutoMigrate(&User{})// 创建记录db.Create(&User{Name: "Alice", Age: 30})// 查询var user Userdb.First(&user, "name = ?", "Alice")
}

何时选择 GORM?

  • 适合:需要快速开发、避免手写 SQL 的场景。
  • 不适合:对性能极致要求或需高度定制化 SQL 的情况(可搭配原生 database/sql 使用)。

总结

  • 如果你是新项目,建议直接使用 GORM v2
  • 学习资源:官方文档(含中文)详细,社区活跃,适合快速上手 ORM 开发。
http://www.xdnf.cn/news/2469.html

相关文章:

  • flutter 选择图片 用九宫格显示图片,右上角X删除选择图片,点击查看图片放大缩小,在多张图片可以左右滑动查看图片
  • QT中的文件操作
  • 在CentOS 8上在线安装Docker
  • ubuntu扩展逻辑卷并调整文件系统大小步骤
  • 1到12月和1到31日英文表达
  • Lua 第10部分 模式匹配
  • 在AWS Glue中实现缓慢变化维度(SCD)的三种类型
  • 阿里云直接对系统云盘扩容
  • OceanBase数据库-学习笔记1-概论
  • 为什么从Word复制到PPT的格式总是乱掉?
  • 使用Aspose.Words将Word转换为HTML时,字体样式丢失问题及解决方法
  • OpenCV彩色图像分割
  • 操作系统:计算机世界的基石与演进
  • 展销编辑器操作难度及优势分析​
  • kafka 中消费者 groupId 是什么
  • Word处理控件Spire.Doc系列教程:C# 通过模板创建 Word 文档
  • 【Java】IntelliJ IDEA 社区版安装
  • MAVLink协议:原理、应用与实践
  • 4.26 数据交互升级引入配置文件
  • Python 第 12、13 节课 - 元组和列表
  • C语言 函数递归
  • TP4056 电池管理芯片介绍及电路应用
  • 计算机二级MS Office第八套演示文稿
  • Pygame入门:零基础打造你的第一个游戏窗口
  • [C++] 高精度乘法
  • 八猴渲染器三维场景实时预览软件 Marmoset Toolbag 5.01 安装包免费下载
  • 九、内联函数(Inline Functions)
  • 《Keras 3部署全攻略:从新手到实战高手》
  • 网络流之最大流(Dinic)
  • Springboot基础篇