ZBLOG

go orm

在 Go 语言中,ORM(Object-Relational Mapping)框架用于简化数据库操作,将关系型数据库的表映射为 Go 的结构体(Struct),并提供面向对象的方式操作数据。以下是 Go 中常用的 ORM 库及其特点:


1. GORM

  • GitHub: https://github.com/go-gorm/gorm
  • 特点
    • 功能最全的 Go ORM,支持主流数据库(MySQL、PostgreSQL、SQLite、SQL Server)。
    • 提供链式 API、事务、关联查询(HasOne/HasMany/BelongsTo)、钩子(Hooks)等高级功能。
    • 支持自动迁移(Auto Migration)、预加载(Preload)、软删除(Soft Delete)。
  • 示例代码: “`go type User struct { gorm.Model Name string Age int }

db, err := gorm.Open(sqlite.Open(“test.db”), &gorm.Config{}) db.AutoMigrate(&User{}) // 自动建表

// 插入数据 db.Create(&User{Name: “Alice”, Age: 25})

// 查询 var user User db.First(&user, “name = ?”, “Alice”)


---

### **2. XORM**
- **GitHub**: [https://github.com/go-xorm/xorm](https://github.com/go-xorm/xorm)
- **特点**:
   -  轻量级但功能强大,支持读写分离和缓存。
   -  提供类似 SQLBuilder的链式调用,兼容多种数据库。
   -  支持反向生成代码(从数据库生成 Struct)。 
- **示例代码**:
 ```go
 engine, _ := xrom.NewEngine("mysql", "user:pass@tcp(host)/db?charset=utf8")
 
 type User struct {
     Id int64
     Name string `xorm:"varchar(25)"`
 }
 
 //查询
 var user User
 engine.Where("name=?", "Alice").Get(&user)

3. Ent (Facebook开发)

  • GitHub:https://entgo.io/
  • 特点
    • 基于代码生成的 ORM,强调类型安全和显式API设计。
    • 适合复杂业务场景,支持图状数据结构查询。
    • 需要先通过 entc (Ent Codegen)工具生成代码。
//生成模型后直接使用:
client.User.Create().
    SetName("Alice").
    SetAge(30).
    Save(ctx)

4. SQLBoiler

-GitHub:https://github.com/volatiletech/sqlboiler -特点

-完全基于数据库Schema生成Go模型和CRUD代码。
-性能高,但灵活性较低(需提前生成代码)。

5. Beego ORM

-GitHub:https://github.com/beego/beego/tree/master/orm -特点:集成在Beego框架中,简单易用。


###选择建议: 1.需要开箱即用 → GORM/XORM
2.追求性能或大型项目 → Ent/SQLBoiler
3.简单项目 → Beego ORM

如果需要更详细教程或对比分析可以告诉我!


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=23881

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?