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

【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 开发。

相关文章:

  • 层级时间轮的 Golang 实现原理与实践
  • Grok发布了Grok Studio 和 Workspaces两个强大的功能。该如何使用?如何使用Grok3 API?
  • Win10安装 P104-100 驱动
  • Gin 框架中集成 runtime/debug 打印日志堆栈信息
  • Conda 虚拟环境复用
  • react的 Fiber 节点的链表存储
  • 通过示例学习:连续 XOR
  • 如何配置osg编译使支持png图标加载显示
  • mybatis首个创建相关步骤
  • 【音视频】SDL简介
  • 实验:串口通信
  • electron-vite 应用打包自定义图标不显示问题
  • 互联网大厂Java求职面试:从Java核心到微服务的深度探索
  • 淘宝tb.cn短链接生成
  • leetcode--盛最多水的容器,接雨水
  • 《Crawl4AI 爬虫工具部署配置全攻略》
  • Spring Boot 中多线程的基础使用
  • 如何将 Apache Paimon 接入 Ambari?完整部署与验证指南
  • React19 useOptimistic 用法
  • AI如何重塑CC防护行业?五大变革与实战策略解析
  • 中央网信办:重点整治违规AI产品、利用AI制作发布谣言等突出问题
  • 辽宁辽阳市白塔区一饭店发生火灾,当地已启动应急响应机制
  • 智能终端出海服务创新联合体成立
  • 陈文清:推进扫黑除恶常态化走深走实,有力回应人民群众对安居乐业的新期待
  • 金科服务:大股东博裕资本提出无条件强制性现金要约收购,总代价约17.86亿港元
  • 诗词文赋俱当歌,听一听古诗词中的音乐性