REL v0.3.0发布:Golang分层架构中的SQL数据库层实现
REL v0.3.0发布:Golang分层架构中的SQL数据库层实现 变更日志:
- 性能监控(#40)
- 迭代器(#46)
- 新增用于分页的
FindAndCountAll方法(#41) - 更一致的
Insert/UpdateAPI 签名(#44) - 支持使用
errors.Is进行错误处理(#50) DeleteAll方法现在只接受查询链(#53)- 使默认日志记录器输出更简洁(#45)
- 更新 Travis CI 配置(#51)
- [文档] 添加性能监控说明及其他微小改进(#52)
Fs02/rel
用于分层架构的 Golang SQL 数据库层。 - Fs02/rel
更多关于REL v0.3.0发布:Golang分层架构中的SQL数据库层实现的实战教程也可以访问 https://www.itying.com/category-94-b0.html
1 回复
更多关于REL v0.3.0发布:Golang分层架构中的SQL数据库层实现的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
REL v0.3.0 的发布为 Go 语言的分层架构带来了更强大的 SQL 数据库层支持。这次更新在性能监控、查询迭代和 API 一致性方面都有显著改进,特别是新增的 FindAndCountAll 方法对分页场景非常实用。
让我通过示例代码展示几个关键特性:
1. 性能监控集成
import (
"github.com/Fs02/rel"
"github.com/Fs02/rel/adapter/mysql"
"github.com/prometheus/client_golang/prometheus"
)
// 启用查询性能监控
adapter, _ := mysql.Open("root@(127.0.0.1:3306)/rel_test?charset=utf8")
repo := rel.New(adapter, rel.Instrument(prometheus.DefaultRegisterer))
// 监控指标会自动收集到 Prometheus
2. 新增的 FindAndCountAll 分页方法
// 传统分页需要两次查询
var users []User
repo.FindAll(ctx, &users, rel.Offset(10), rel.Limit(20))
total, _ := repo.Count(ctx, "users")
// v0.3.0 新增的单一方法
var users []User
total, err := repo.FindAndCountAll(ctx, &users, rel.Offset(10), rel.Limit(20))
// total 包含总记录数,users 包含当前页数据
3. 更一致的 Insert/Update API
// 之前版本 API 不一致
repo.Insert(ctx, &user) // 返回错误
updated, err := repo.Update(ctx, &user) // 返回布尔值和错误
// v0.3.0 统一了签名
err := repo.Insert(ctx, &user) // 统一返回错误
err := repo.Update(ctx, &user) // 统一返回错误
4. 改进的错误处理支持
import "errors"
var (
ErrNotFound = errors.New("not found")
)
// 使用 errors.Is 检查特定错误
err := repo.Find(ctx, &user, rel.Eq("id", 999))
if errors.Is(err, rel.ErrNotFound) {
// 处理记录不存在的情况
}
5. 迭代器支持大数据集处理
// 使用迭代器避免一次性加载所有数据
iter, err := repo.Iterate(ctx, rel.From("users").SortAsc("id"))
defer iter.Close()
for {
var user User
if !iter.Next(&user) {
break
}
// 处理每个用户,内存效率更高
}
6. 简化的 DeleteAll 使用
// 现在只接受查询链,更安全
err := repo.DeleteAll(ctx, rel.From("users").Where(rel.Eq("status", "inactive")))
// 防止意外删除所有记录
这些改进使得 REL 在处理复杂查询、性能监控和大数据集时更加高效和可靠。特别是性能监控的集成和 FindAndCountAll 方法的加入,在实际项目中能显著提升开发效率和系统可观测性。

