API Reference

Table of contents

  1. builder
    1. QueryBuilder
    2. SelectBuilder
    3. InsertBuilder
    4. UpdateBuilder
    5. DeleteBuilder
    6. CreateBuilder
  2. condition
    1. Operator
    2. Condition
    3. ConditionEntry
    4. Connector
  3. query
    1. Query
    2. JoinClause
    3. ScalarSelectItem
    4. QueryableStorage
  4. sql
    1. SqlDialect
    2. SqlResult
  5. configuration
    1. QueryBuilderDefaults
    2. QueryBuilderDefaults.Builder
  6. exception
    1. QueryBuilderException
    2. QueryException
    3. QueryRenderException

builder

QueryBuilder

Main entry point for SELECT queries and static gateway to DML builders.

Static factory methods

Method Returns Description
insert() InsertBuilder New InsertBuilder
insertInto(String table) InsertBuilder New InsertBuilder pre-set to table
update() UpdateBuilder New UpdateBuilder
update(String table) UpdateBuilder New UpdateBuilder pre-set to table
delete() DeleteBuilder New DeleteBuilder
deleteFrom(String table) DeleteBuilder New DeleteBuilder pre-set to table
createTable() CreateBuilder New CreateBuilder
createTable(String table) CreateBuilder New CreateBuilder pre-set to table

SELECT builder methods

Method Returns Description
from(String table) QueryBuilder Set source table
select(String... columns) QueryBuilder Add columns to SELECT clause; omit for SELECT *
distinct() QueryBuilder Add DISTINCT to SELECT
whereEquals(col, val) QueryBuilder WHERE col = ? (AND)
orWhereEquals(col, val) QueryBuilder WHERE col = ? (OR)
whereNotEquals(col, val) QueryBuilder WHERE col != ? (AND)
whereGreaterThan(col, val) QueryBuilder WHERE col > ? (AND)
whereGreaterThanOrEquals(col, val) QueryBuilder WHERE col >= ? (AND)
whereLessThan(col, val) QueryBuilder WHERE col < ? (AND)
whereLessThanOrEquals(col, val) QueryBuilder WHERE col <= ? (AND)
whereLike(col, String val) QueryBuilder WHERE col LIKE ? (AND)
whereNotLike(col, String val) QueryBuilder WHERE col NOT LIKE ? (AND)
whereNull(col) QueryBuilder WHERE col IS NULL (AND)
whereNotNull(col) QueryBuilder WHERE col IS NOT NULL (AND)
whereExists(col) QueryBuilder WHERE col IS NOT NULL (AND)
whereIn(col, List<?>) QueryBuilder WHERE col IN (...) (AND)
whereNotIn(col, List<?>) QueryBuilder WHERE col NOT IN (...) (AND)
whereBetween(col, a, b) QueryBuilder WHERE col BETWEEN ? AND ? (AND)
whereInSubquery(col, Query) QueryBuilder WHERE col IN (SELECT ...) (AND)
whereEqualsSubquery(col, Query) QueryBuilder WHERE col = (SELECT ...) (AND)
whereExistsSubquery(Query) QueryBuilder WHERE EXISTS (SELECT ...) (AND)
whereNotExistsSubquery(Query) QueryBuilder WHERE NOT EXISTS (SELECT ...) (AND)
fromSubquery(Query, String alias) QueryBuilder Replace FROM with a derived-table subquery
joinSubquery(Query, String alias, String on) QueryBuilder INNER JOIN (SELECT ...) AS alias ON ...
selectSubquery(Query, String alias) QueryBuilder Add (SELECT ...) AS alias to SELECT list
groupBy(String... columns) QueryBuilder Add GROUP BY columns
havingRaw(String clause) QueryBuilder Set raw HAVING SQL fragment
orderBy(String col, boolean asc) QueryBuilder Add ORDER BY column; true = ASC
limit(int n) QueryBuilder Set LIMIT
offset(int n) QueryBuilder Set OFFSET
build() Query Build a Query object (no SQL rendered yet)
buildSql() SqlResult Render SELECT using table set via from(), standard dialect
buildSql(SqlDialect) SqlResult Render SELECT using table set via from(), specified dialect
buildSql(String table) SqlResult Render SELECT for explicit table, standard dialect
buildSql(String table, SqlDialect) SqlResult Render SELECT for explicit table and dialect
withDefaults(QueryBuilderDefaults) QueryBuilder Set per-instance configuration defaults; throws NullPointerException if null

SelectBuilder

Lower-level SELECT builder that produces SqlResult directly (no Query intermediary).

Method Returns Description
from(String table) SelectBuilder Set source table
select(String... columns) SelectBuilder Add SELECT columns
distinct() SelectBuilder Add DISTINCT
whereEquals(col, val) SelectBuilder WHERE col = ?
whereIn(col, List<?>) SelectBuilder WHERE col IN (...)
whereLike(col, String val) SelectBuilder WHERE col LIKE ?
groupBy(String... columns) SelectBuilder Add GROUP BY
orderBy(String col, boolean asc) SelectBuilder Add ORDER BY
limit(int n) SelectBuilder Set LIMIT
offset(int n) SelectBuilder Set OFFSET
withDefaults(QueryBuilderDefaults) SelectBuilder Set per-instance configuration defaults; throws NullPointerException if null
build() SqlResult Render SELECT using defaults dialect
build(SqlDialect) SqlResult Render SELECT with given dialect

InsertBuilder

Method Returns Description
into(String table) InsertBuilder Set target table
value(String col, Object val) InsertBuilder Add a column/value pair
build() SqlResult Render with standard dialect
build(SqlDialect) SqlResult Render with specified dialect

UpdateBuilder

Method Returns Description
table(String table) UpdateBuilder Set target table
set(String col, Object val) UpdateBuilder Add a SET pair
whereEquals(col, val) UpdateBuilder WHERE col = ? (AND)
orWhereEquals(col, val) UpdateBuilder WHERE col = ? (OR)
whereGreaterThanOrEquals(col, int val) UpdateBuilder WHERE col >= ? (AND)
build() SqlResult Render with standard dialect
build(SqlDialect) SqlResult Render with specified dialect

DeleteBuilder

Method Returns Description
from(String table) DeleteBuilder Set target table
whereEquals(col, val) DeleteBuilder WHERE col = ? (AND)
whereNotEquals(col, val) DeleteBuilder WHERE col != ? (AND)
whereGreaterThan(col, val) DeleteBuilder WHERE col > ? (AND)
whereGreaterThanOrEquals(col, val) DeleteBuilder WHERE col >= ? (AND)
whereLessThan(col, val) DeleteBuilder WHERE col < ? (AND)
whereLessThanOrEquals(col, val) DeleteBuilder WHERE col <= ? (AND)
whereIn(col, List<?>) DeleteBuilder WHERE col IN (...) (AND); throws IllegalArgumentException if list is null/empty
whereNotIn(col, List<?>) DeleteBuilder WHERE col NOT IN (...) (AND); throws IllegalArgumentException if list is null/empty
whereBetween(col, from, to) DeleteBuilder WHERE col BETWEEN ? AND ? (AND)
withDefaults(QueryBuilderDefaults) DeleteBuilder Set per-instance configuration defaults; throws NullPointerException if null
build() SqlResult Render with standard dialect
build(SqlDialect) SqlResult Render with specified dialect

CreateBuilder

Method Returns Description
table(String name) CreateBuilder Set table name
column(String name, String sqlType) CreateBuilder Add column definition
primaryKey(String name) CreateBuilder Declare a primary key column
ifNotExists() CreateBuilder Add IF NOT EXISTS
build() SqlResult Render; throws IllegalStateException if table or columns are missing
build(SqlDialect) SqlResult Render with specified dialect

condition

Operator

Enum of comparison operators. See Conditions for the full table.

Constant SQL
EQ = ?
NEQ != ?
GT > ?
GTE >= ?
LT < ?
LTE <= ?
LIKE LIKE ?
NOT_LIKE NOT LIKE ?
EXISTS IS NOT NULL
IS_NULL IS NULL
IS_NOT_NULL IS NOT NULL
IN IN (...)
NOT_IN NOT IN (...)
BETWEEN BETWEEN ? AND ?
EXISTS_SUBQUERY EXISTS (SELECT ...)
NOT_EXISTS_SUBQUERY NOT EXISTS (SELECT ...)

Condition

Member Description
Condition(Operator op, Object value) Create a condition; value may be null
getOperator() Returns the Operator
getValue() Returns the comparison value (null, scalar, List<?>, or Query)
matches(Map<String,Object> map, String key) Evaluate against an in-memory attribute map

ConditionEntry

Member Description
ConditionEntry(String col, Condition cond, Connector connector) Create a condition entry
getColumn() Column name (null for EXISTS-subquery conditions)
getCondition() The wrapped Condition
getConnector() AND or OR

Connector

Constant SQL keyword
AND AND
OR OR

query

Query

Immutable data holder produced by QueryBuilder.build(). All fields have getters and setters; setters are used exclusively by the builders.

Getter Type Description
getTable() String Source table name
getSelectColumns() List<String> Columns in SELECT clause; empty = SELECT *
isDistinct() boolean Whether DISTINCT is active
getConditions() List<ConditionEntry> WHERE conditions
getGroupBy() List<String> GROUP BY columns
getHavingRaw() String Raw HAVING fragment
getOrderBy() List<String> ORDER BY columns
getOrderByAsc() List<Boolean> True = ASC per ORDER BY entry
getLimit() Integer LIMIT value; 0 or negative = no limit
getOffset() Integer OFFSET value
getFromSubquery() Query FROM-derived subquery; null for plain table
getFromAlias() String Alias for FROM subquery
getJoins() List<JoinClause> JOIN clauses
getSelectSubqueries() List<ScalarSelectItem> Scalar SELECT subquery items

JoinClause

Member Description
JoinClause(Type, String table, String on) Plain-table join
JoinClause(Type, Query subquery, String alias, String on) Subquery (derived-table) join
getType() JoinClause.Type: INNER, LEFT, RIGHT, or CROSS
getTable() Table name for plain-table join; null for subquery join
getSubquery() Subquery for derived-table join; null for plain-table join
getAlias() Alias for derived-table join
getOnCondition() Raw SQL ON fragment

ScalarSelectItem

Member Description
ScalarSelectItem(Query subquery, String alias) Create a scalar SELECT item
getSubquery() The subquery to embed
getAlias() Column alias in SELECT clause

QueryableStorage

Functional interface for in-memory filtering.

@FunctionalInterface
public interface QueryableStorage {
    List<String> query(Query q) throws Exception;
}

sql

SqlDialect

Member Description
STANDARD ANSI SQL (no identifier quoting)
MYSQL MySQL: back-tick quoting; DELETE LIMIT supported
SQLITE SQLite: double-quote quoting; DELETE LIMIT supported
render(Query) Render a SELECT query to SqlResult
renderDelete(Query) Render a DELETE query to SqlResult

SqlResult

Method Returns Description
getSql() String Rendered SQL with ? placeholders
getParameters() List<Object> Bind parameters in placeholder order

configuration

QueryBuilderDefaults

Immutable configuration object. See Configuration for a full usage guide.

Static methods

Method Returns Description
global() QueryBuilderDefaults Current JVM-wide defaults instance
setGlobal(defaults) void Replace the JVM-wide defaults; throws NullPointerException if null
builder() Builder New builder pre-filled with canonical defaults
builder(source) Builder New builder copied from source; throws NullPointerException if null

Instance getters

Method Returns Description
getDialect() SqlDialect Configured SQL dialect
getDefaultColumns() String Default SELECT column expression
getDefaultLimit() int Default LIMIT; -1 means none
getDefaultOffset() int Default OFFSET; -1 means none
getLikePrefix() String Prefix for LIKE values
getLikeSuffix() String Suffix for LIKE values

QueryBuilderDefaults.Builder

Method Returns Description
dialect(SqlDialect) Builder Set dialect; throws NullPointerException if null
defaultColumns(String) Builder Set default SELECT columns; throws NullPointerException if null
defaultLimit(int) Builder Set default LIMIT; pass -1 to disable
defaultOffset(int) Builder Set default OFFSET; pass -1 to disable
likePrefix(String) Builder Set LIKE prefix; throws NullPointerException if null
likeSuffix(String) Builder Set LIKE suffix; throws NullPointerException if null
build() QueryBuilderDefaults Build the immutable configuration object

exception

QueryBuilderException

Constructor Description
QueryBuilderException() No-message default
QueryBuilderException(String message) Simple message
QueryBuilderException(String message, Throwable cause) Wraps another exception
QueryBuilderException(Throwable cause) Re-throws

QueryException

Constructor Description
QueryException() No-message default
QueryException(String message) Simple message
QueryException(String message, Throwable cause) Wraps another exception
QueryException(Throwable cause) Re-throws

QueryRenderException

Constructor Description
QueryRenderException() No-message default
QueryRenderException(String message) Simple message
QueryRenderException(String message, Throwable cause) Wraps another exception
QueryRenderException(Throwable cause) Re-throws