Golang ORM框架 Toyorm v0.4-alpha 版本发布

Golang ORM框架 Toyorm v0.4-alpha 版本发布

Toyorm 是功能强大的 Go ORM

https://bigpigeon.org/toyorm/

本次更新添加了 Cas Fieldtoy-factory

更多详细信息请参阅更新日志

目前具备以下功能:

  • 表迁移(创建表/删除表)
  • 数据操作(插入/保存/更新/查找/删除)
  • 预加载操作(BelongTo/OneToOne/OneToMany/ManyToMany 模式)
  • 连接查询
  • 事务处理
  • 忽略模式(忽略指定的零值/空值字段)
  • 绑定字段(绑定字段时,仅对表中的绑定字段进行操作)
  • 软删除(更新 DeletedAt 字段替代实际删除操作)
  • 作用域(自定义 SQL 构建)
  • 遵守协议时线程安全
  • SQL 模板(自定义 SQL 语法)
  • 结果与错误(记录 SQL 操作日志和错误)
  • 集合(多数据库操作)
  • toy-doctor(检查 FieldSelection 参数)

更多关于Golang ORM框架 Toyorm v0.4-alpha 版本发布的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于Golang ORM框架 Toyorm v0.4-alpha 版本发布的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Toyorm v0.4-alpha 的发布是一个重要的更新,特别是引入了 Cas Field 和 toy-factory 功能。Cas Field 允许在并发环境中进行原子操作,而 toy-factory 可能简化了模型实例的创建过程。以下是一个简单的示例,展示如何使用这些新功能。

首先,假设你有一个用户模型,并想利用 Cas Field 来处理版本控制,以防止并发更新冲突。

package main

import (
    "context"
    "fmt"
    "github.com/bigpigeon/toyorm"
)

type User struct {
    ID      int64
    Name    string
    Version int64 `toy:"cas"` // 使用 Cas Field 标记版本字段
}

func main() {
    // 初始化 Toyorm 引擎
    engine, err := toyorm.Open("sqlite3", "test.db")
    if err != nil {
        panic(err)
    }
    defer engine.Close()

    // 创建表(如果不存在)
    err = engine.Migrate(context.Background(), &User{})
    if err != nil {
        panic(err)
    }

    // 插入新用户
    user := &User{Name: "Alice", Version: 1}
    err = engine.Insert(context.Background(), user)
    if err != nil {
        panic(err)
    }

    // 更新用户名称,使用 Cas Field 确保原子性
    user.Name = "Bob"
    affected, err := engine.Update(context.Background(), user, toyorm.Where("id = ?", user.ID))
    if err != nil {
        panic(err)
    }
    fmt.Printf("更新了 %d 条记录\n", affected)
}

对于 toy-factory,它可能用于生成模型实例或构建查询。假设它提供了工厂方法来创建预配置的对象。

// 使用 toy-factory 创建用户实例
factory := toyorm.NewFactory()
userFactory := factory.For(&User{})

// 创建一个带默认值的用户
defaultUser := userFactory.Create().(*User)
defaultUser.Name = "Default User"
fmt.Println("创建的用户:", defaultUser.Name)

// 或者批量创建用户
users := userFactory.BatchCreate(3)
for i, u := range users {
    user := u.(*User)
    user.Name = fmt.Sprintf("User%d", i+1)
    fmt.Printf("批量用户: %s\n", user.Name)
}

这些示例展示了如何利用新功能来提升代码的并发安全性和可维护性。Toyorm 的其他功能如预加载、事务和软删除,在 v0.4-alpha 中应该也得到了优化。建议查阅官方文档以获取更详细的用法。

回到顶部