A lightweight, ORM-free SQL query builder for Go. Designed for simplicity and compatibility with database/sql and libraries like sqlx.
- Simple API: Chainable methods for building SQL queries
- Zero ORM Dependencies: Use raw SQL with your preferred driver (
pgx,sqlx,database/sql, etc.) - SQL Injection Protection: Parameterized arguments
- Minimalist: Pure GO, no external dependencies
go get github.com/MattConce/goqueryx/queryxtype User struct {
Id `db:"id"`
Name `db:"name"`
}
db := sqlx.MustConnect("mysql", "<username>:<password>@tcp(<host>:3306)/<dbname>")
qb := queryx.NewQuery().
Select("id", "name").
From("users").
Where("active = ?", []any{true})
sql, args, _ := qb.Build()
sql = db.Rebind(sql)
var users []User
err := db.Select(&users, sql, args...)
if err != nil {
panic(err)
}qb := queryx.NewQuery().
Select("id", "email").
From("users").
Where("created_at > ?", []any{"2024-01-01"}).
OrderBy("id DESC")
sql, args, _ := qb.Build()
// SQL: SELECT id, email FROM users WHERE created_at > ? ORDER BY id DESC
// Args: [2024-01-01]-
Add support for DELETE statement
-
Support dialect-specific placeholders (e.g., $1 for PostgreSQL)
-
Add query validation for unsupported operations
-
Improve error messages for missing required clauses
License MIT. See LICENSE.