JavaQueryBuilder
JavaQueryBuilder is a lightweight, fluent Java library for building parameterized SQL queries and filtering in-memory data. No runtime dependencies required.
Features
- Fluent SELECT builder:
from,select,distinct,where*,orderBy,groupBy,havingRaw,limit,offset - DML builders:
InsertBuilder,UpdateBuilder,DeleteBuilder,CreateBuilder - Parameterized-only: user values always go through
?bind parameters; SQL injection is structurally impossible - 16 operators: equality, comparison,
LIKE,NULLchecks,IN,BETWEEN,EXISTS, and subquery operators - Subquery support:
WHERE col IN (SELECT ...),WHERE EXISTS (SELECT ...),WHERE NOT EXISTS (SELECT ...), scalarWHERE col = (SELECT ...), FROM-derived table, JOIN subquery, and scalarSELECTitems - Three SQL dialects:
STANDARD(ANSI),MYSQL(back-tick quoting),SQLITE(double-quote) - Global and per-query configuration via
QueryBuilderDefaults: preset dialect, default columns, limit, offset, and LIKE wrapping once at application startup - In-memory filtering:
QueryableStoragefunctional interface applies the sameQueryto flat-map collections without touching a database - Zero runtime dependencies: pure Java 25+, nothing to shade or exclude
Quick start
1. Add JavaQueryBuilder via JitPack:
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependency>
<groupId>com.github.EzFramework</groupId>
<artifactId>JavaQueryBuilder</artifactId>
<version>1.0.4</version>
</dependency>
2. Build a SELECT query:
import com.github.ezframework.javaquerybuilder.query.builder.QueryBuilder;
import com.github.ezframework.javaquerybuilder.query.sql.SqlDialect;
import com.github.ezframework.javaquerybuilder.query.sql.SqlResult;
SqlResult result = new QueryBuilder()
.from("users")
.select("id", "name", "email")
.whereEquals("status", "active")
.whereGreaterThan("age", 18)
.orderBy("name", true)
.limit(20)
.buildSql(SqlDialect.MYSQL);
String sql = result.getSql(); // SELECT `id`, `name`, `email` FROM `users` WHERE ...
List<?> params = result.getParameters(); // ["active", 18]
3. Build an INSERT:
SqlResult insert = QueryBuilder.insertInto("users")
.value("name", "Alice")
.value("email", "[email protected]")
.build();
4. Update with a condition:
SqlResult update = QueryBuilder.update("users")
.set("status", "inactive")
.whereEquals("id", 42)
.build();
Documentation
| Page | What it covers |
|---|---|
| Installation | Maven, Gradle, JitPack, GitHub Packages |
| Query Builder | SELECT: from, select, where*, orderBy, build |
| DML Builders | InsertBuilder, UpdateBuilder, DeleteBuilder, CreateBuilder |
| Conditions | All 16 operators, Condition, ConditionEntry, Connector |
| Subqueries | All six subquery variants |
| SQL Dialects | STANDARD, MYSQL, SQLITE, SqlResult, dialect matrix |
| Configuration | QueryBuilderDefaults: global and per-query dialect, columns, limit, LIKE wrapping |
| In-Memory Filtering | QueryableStorage: filter collections without a database |
| Exceptions | Error hierarchy and handling patterns |
| API Reference | Full public-method tables for every class |