Golang SQLBuilder:轻量级SQL查询字符串构建工具
Golang SQLBuilder:轻量级SQL查询字符串构建工具 https://github.com/eehsiao/sqlbuilder
sqlbuilder
sqlbuilder 是一个简单的 SQL 查询字符串构建器
sqlbuilder 采用递归调用函数的方式,让您可以轻松构建 SQL 字符串
例如:dao.Select().From().Join().Where().Limit()
SqlBuilder 函数
-
构建 select:
- Select(s …string)
- Distinct(b bool)
- Top(i int)
- From(s …string)
- Where(s string)
- WhereAnd(s …string)
- WhereOr(s …string)
- Join(s string, c string)
- InnerJoin(s string, c string)
- LeftJoin(s string, c string)
- RightJoin(s string, c string)
- FullJoin(s string, c string)
- GroupBy(s …string)
- OrderBy(s …string)
- OrderByAsc(s …string)
- OrderByDesc(s …string)
- Having(s string)
- BuildSelectSQL()
-
构建 update:
- Set(s map[string]interface{})
- FromOne(s string)
- BuildUpdateSQL()
-
构建 insert:
- Into(s string)
- Fields(s …string)
- Values(s …[]interface{})
- BuildInsertSQL()
-
构建 delete:
- BuildDeleteSQL()
-
通用功能:
- ClearBuilder()
- BuildedSQL()
- SetDbName(s string)
- SetTbName(s string)
- SwitchPanicToErrorLog(b bool)
- PanicOrErrorLog(s string)
更多关于Golang SQLBuilder:轻量级SQL查询字符串构建工具的实战教程也可以访问 https://www.itying.com/category-94-b0.html
1 回复
更多关于Golang SQLBuilder:轻量级SQL查询字符串构建工具的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
这是一个非常实用的 Go 语言 SQL 查询构建器库。让我通过几个示例代码来展示如何使用这个库的主要功能:
基本 SELECT 查询
import "github.com/eehsiao/sqlbuilder"
// 简单查询
builder := sqlbuilder.NewBuilder()
sql, err := builder.Select("id", "name", "email").
From("users").
Where("age > ?").
OrderByDesc("created_at").
Limit(10).
BuildSelectSQL()
// 输出: SELECT id, name, email FROM users WHERE age > ? ORDER BY created_at DESC LIMIT 10
复杂 JOIN 查询
builder := sqlbuilder.NewBuilder()
sql, err := builder.Select("u.id", "u.name", "p.title").
From("users u").
InnerJoin("posts p", "u.id = p.user_id").
WhereAnd("u.status = ?", "p.published = ?").
GroupBy("u.id").
Having("COUNT(p.id) > ?").
BuildSelectSQL()
// 输出: SELECT u.id, u.name, p.title FROM users u INNER JOIN posts p ON u.id = p.user_id
// WHERE (u.status = ?) AND (p.published = ?) GROUP BY u.id HAVING COUNT(p.id) > ?
INSERT 操作
builder := sqlbuilder.NewBuilder()
sql, err := builder.Into("users").
Fields("name", "email", "age").
Values([]interface{}{"John", "john@example.com", 30}).
BuildInsertSQL()
// 输出: INSERT INTO users (name, email, age) VALUES (?, ?, ?)
UPDATE 操作
builder := sqlbuilder.NewBuilder()
sql, err := builder.FromOne("users").
Set(map[string]interface{}{
"name": "Jane",
"age": 25,
}).
Where("id = ?").
BuildUpdateSQL()
// 输出: UPDATE users SET name = ?, age = ? WHERE id = ?
DELETE 操作
builder := sqlbuilder.NewBuilder()
sql, err := builder.FromOne("users").
Where("id = ?").
BuildDeleteSQL()
// 输出: DELETE FROM users WHERE id = ?
使用 DISTINCT 和 TOP
builder := sqlbuilder.NewBuilder()
sql, err := builder.Select("name").
Distinct(true).
Top(5).
From("users").
BuildSelectSQL()
// 输出: SELECT DISTINCT TOP 5 name FROM users
条件构建
builder := sqlbuilder.NewBuilder()
sql, err := builder.Select("*").
From("products").
WhereOr("category = ?", "price > ?").
OrderByAsc("name").
BuildSelectSQL()
// 输出: SELECT * FROM products WHERE (category = ?) OR (price > ?) ORDER BY name ASC
这个库的递归调用设计确实让 SQL 构建变得非常直观和流畅。每个方法都返回 builder 实例,支持链式调用,代码可读性很好。对于需要动态构建 SQL 查询的 Go 应用程序来说,这是一个很好的工具选择。

