Lightweight, fluent SQL builder for Java 21. Build complex queries programmatically with type-safety and multi-dialect support.
- Fluent CRUD: Programmatic
SELECT,INSERT,UPDATE, andDELETE. - Multi-Dialect: Native support for Oracle, Postgres, H2, DB2, and MSSQL.
- Modular Expressions: Deeply nested
WHERE/HAVINGclauses withAND/ORchaining. - Type-Safe Joins: Dedicated join implementations for
INNER,LEFT,RIGHT, andFULL. - Zero-Dependency: Keeps your project footprint small.
// Choose your dialect
SqlDialect dialect = new PostgresDialect();
SelectBuilder select = new SelectBuilder(dialect);Query query = select
.select("u.name", "COUNT(o.id)")
.from("users", "u")
.leftJoin("orders", "o", Expression.eq("u.id", Expression.column("o.user_id")))
.where(Expression.eq("u.status", "active"))
.groupBy("u.name")
.having(Expression.gt("COUNT(o.id)", 5))
.orderBy("u.name").asc()
.limit(10)
.build();
System.out.println(query.getStatement()); // SQL string
System.out.println(query.getParameters()); // List of objects// INSERT
new InsertBuilder(dialect).into("users").value("name", "John").build();
// UPDATE
new UpdateBuilder(dialect).table("users").set("status", "active").where(Expression.eq("id", 1)).build();
// DELETE
new DeleteBuilder(dialect).from("users").where(Expression.eq("id", 1)).build();- Builders: Orchestrate query assembly, extending
AbstractBuilder. - Dialects: Isolate DB-specific syntax (e.g., paging).
- Expressions: Modular system of
ConditionandOperandobjects. - Joins: Independent classes for SQL join logic.
mvn clean test # Run tests and JaCoCo coverageMIT