1. 概览

一个神奇的,对开发人员友好的 Golang ORM 库

1.1. 概览

  • 全特性 ORM (几乎包含所有特性)
  • 模型关联 (一对一, 一对多,一对多(反向), 多对多, 多态关联)
  • 钩子 (Before/After Create/Save/Update/Delete/Find)
  • 预加载
  • 事务
  • 复合主键
  • SQL 构造器
  • 自动迁移
  • 日志
  • 基于GORM回调编写可扩展插件
  • 全特性测试覆盖
  • 开发者友好

1.2. 安装

  1. go get -u github.com/jinzhu/gorm

1.3. 快速开始

  1. package main
  2. import (
  3. "github.com/jinzhu/gorm"
  4. _ "github.com/jinzhu/gorm/dialects/sqlite"
  5. )
  6. type Product struct {
  7. gorm.Model
  8. Code string
  9. Price uint
  10. }
  11. func main() {
  12. db, err := gorm.Open("sqlite3", "test.db")
  13. if err != nil {
  14. panic("failed to connect database")
  15. }
  16. defer db.Close()
  17. //自动检查 Product 结构是否变化,变化则进行迁移
  18. db.AutoMigrate(&Product{})
  19. // 增
  20. db.Create(&Product{Code: "L1212", Price: 1000})
  21. // 查
  22. var product Product
  23. db.First(&product, 1) // 找到id为1的产品
  24. db.First(&product, "code = ?", "L1212") // 找出 code 为 l1212 的产品
  25. // 改 - 更新产品的价格为 2000
  26. db.Model(&product).Update("Price", 2000)
  27. // 删 - 删除产品
  28. db.Delete(&product)
  29. }