探索数据操作新境界: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还支持如COUNT
、SUM
、MAX
、MIN
、AVG
等聚合查询的便捷执行方式。
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