探索数据操作新境界:Gendry - Go语言的数据库助手

探索数据操作新境界:Gendry - Go语言的数据库助手

gendrya golang library for sql builder项目地址:https://gitcode.com/gh_mirrors/ge/gendry

在编程世界中,高效的数据库操作是至关重要的。Gendry,一个由滴滴出行贡献的Go库,正是为了解决这一问题而生。它基于go-sql-driver/mysql,提供了一系列简单但实用的工具,帮助您轻松地准备调用database/sql标准库方法所需的参数。

项目名称中的"Gendry"取自热门剧集《权力的游戏》中的角色,象征着这个库如同剧中的铁匠一样,为您的数据库操作打造精准的SQL语句。

Gendry分为三个独立的部分:Manager、Builder和Scanner,您可以根据需求选择使用。

Manager:数据库连接池管理器

Manager负责初始化数据库连接池(即sql.DB)。您可以设置几乎所有的MySQL驱动支持的参数。例如,以下是如何创建一个数据库连接池:

db, err := manager.New(dbName, user, password, host)
    .Set(
        manager.SetCharset("utf8"),
        manager.SetAllowCleartextPasswords(true),
        manager.SetInterpolateParams(true),
        manager.SetTimeout(1 * time.Second),
        manager.SetReadTimeout(1 * time.Second)
    ).Port(3302).Open(true)

Manager基于go-mysql-driver/mysql,更多详细信息可参考相关文档。

Builder:SQL构建器

Builder的作用在于简化SQL编写,使其更易于维护。手动编写SQL虽然直观,但在处理大量元素的IN条件时显得力不从心。Builder不需要ORM,而是提供了一组简单的API来帮助您构建SQL:

where := map[string]interface{}{
    "city": []string{"beijing", "shanghai"},
    "score": 5,
    "age >": 35,
}
table := "some_table"
selectFields := []string{"name", "age", "sex"}
cond, values, err := builder.BuildSelect(table, where, selectFields)

Builder还支持如COUNTSUMMAXMINAVG等聚合查询的便捷执行方式。

Scanner:结果映射利器

Scanner让将查询结果映射到结构体变得轻而易举,利用反射技术实现了自动转换。比如:

type Person struct {
	Name string `ddb:"name"`
	Age int `ddb:"m_age"`
}

rows, err := db.Query("SELECT age as m_age, name from g_xxx where xxx")

scanner.Scan(rows, &students)

此外,Scanner还支持自定义接口ByteUnmarshaler,允许您控制特定类型的数据解析逻辑。

更多工具:CLI应用

除了以上组件,Gendry还提供了名为Gforge的命令行工具,以协助代码生成工作。

特点一览

  • 易于集成:直接使用Go包,无需额外依赖。
  • 灵活操作:Manager允许精细配置数据库连接,Builder支持复杂条件表达式。
  • 自动化处理:Scanner能智能映射数据到结构体,减少手动操作。
  • 高效性能:经过优化,确保在保持代码简洁的同时,性能不打折。

无论您是Go新手还是经验丰富的开发者,Gendry都能成为您数据库操作的好帮手。现在就加入我们,探索Gendry如何提升您的开发效率!

gendrya golang library for sql builder项目地址:https://gitcode.com/gh_mirrors/ge/gendry

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邬稳研Beneficient

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值