JavaQueryBuilder

JitPack GitHub Packages

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, NULL checks, IN, BETWEEN, EXISTS, and subquery operators
  • Subquery support: WHERE col IN (SELECT ...), WHERE EXISTS (SELECT ...), WHERE NOT EXISTS (SELECT ...), scalar WHERE col = (SELECT ...), FROM-derived table, JOIN subquery, and scalar SELECT items
  • 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: QueryableStorage functional interface applies the same Query to 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", "alice@example.com")
    .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