- java.lang.Object
-
- org.jooq.impl.CustomQueryPart
-
- All Implemented Interfaces:
Serializable
,QueryPart
,QueryPartInternal
public abstract class CustomQueryPart extends Object
A base class for customQueryPart
implementations in client code.Client code may provide proper
Condition
implementations extending this useful base class. All necessary parts of theCondition
interface are already implemented. Only this method needs further implementation:accept(Context)
.Refer to that methods' Javadoc for further details about their expected behaviour.
Such custom
QueryPart
implementations can be useful in any of these scenarios:- When reusing a custom
QueryPart
in other customQueryPart
s, e.g. inCustomCondition
,CustomField
,CustomTable
, etc. - When inlining a custom
QueryPart
in plain SQL methods, such asDSL.condition(String, QueryPart...)
,DSL.field(String, QueryPart...)
,DSL.table(String, QueryPart...)
- Author:
- Lukas Eder
- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
CustomQueryPart()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method Description abstract void
accept(Context<?> ctx)
Subclasses must implement this method.Clause[]
clauses(Context<?> ctx)
TheClause
s that are represented by this query part.protected DSLContext
create()
Deprecated.- 3.11.0 - [#6722] - UseAttachable.configuration()
andConfiguration.dsl()
instead.protected DSLContext
create(Configuration configuration)
Deprecated.- 3.11.0 - [#6722] - UseAttachable.configuration()
andConfiguration.dsl()
instead.protected DSLContext
create(Context<?> ctx)
Deprecated.- 3.11.0 - [#6722] - UseAttachable.configuration()
andConfiguration.dsl()
instead.boolean
declaresCTE()
Subclasses may override thisboolean
declaresFields()
Subclasses may override thisboolean
declaresTables()
Subclasses may override thisboolean
declaresWindows()
Subclasses may override thisboolean
equals(Object that)
Check whether thisQueryPart
can be considered equal to anotherQueryPart
.boolean
generatesCast()
Subclasses may override thisint
hashCode()
Generate a hash code from thisQueryPart
.static CustomQueryPart
of(Consumer<? super Context<?>> consumer)
Create aCustomQueryPart
from a lambda expression.boolean
rendersContent(Context<?> ctx)
Subclasses may override thisString
toString()
Render a SQL string representation of thisQueryPart
.protected DataAccessException
translate(String sql, SQLException e)
Internal convenience method
-
-
-
Method Detail
-
of
public static final CustomQueryPart of(Consumer<? super Context<?>> consumer)
Create aCustomQueryPart
from a lambda expression.
-
accept
public abstract void accept(Context<?> ctx)
Subclasses must implement this method.
ThisQueryPart
canaccept
aContext
object in order to render a SQL string or to bind its variables.- Specified by:
accept
in interfaceQueryPartInternal
-
clauses
public final Clause[] clauses(Context<?> ctx)
Description copied from interface:QueryPartInternal
TheClause
s that are represented by this query part.QueryPart
s can specify severalClause
s for which an event will be emittedbefore
(in forward order) andafter
(in reverse order) visiting the the query part throughContext.visit(QueryPart)
This method is for JOOQ INTERNAL USE only. Do not reference directly
- Specified by:
clauses
in interfaceQueryPartInternal
- Returns:
- The
Clause
s represented by this query part ornull
or an empty array if this query part does not represent a clause.
-
declaresFields
public final boolean declaresFields()
Subclasses may override this- Specified by:
declaresFields
in interfaceQueryPartInternal
-
declaresTables
public final boolean declaresTables()
Subclasses may override this- Specified by:
declaresTables
in interfaceQueryPartInternal
-
rendersContent
public boolean rendersContent(Context<?> ctx)
Subclasses may override this- Specified by:
rendersContent
in interfaceQueryPartInternal
-
declaresWindows
public boolean declaresWindows()
Subclasses may override this- Specified by:
declaresWindows
in interfaceQueryPartInternal
-
declaresCTE
public boolean declaresCTE()
Subclasses may override this- Specified by:
declaresCTE
in interfaceQueryPartInternal
-
generatesCast
public boolean generatesCast()
Subclasses may override this- Specified by:
generatesCast
in interfaceQueryPartInternal
-
equals
public boolean equals(Object that)
Description copied from interface:QueryPart
Check whether thisQueryPart
can be considered equal to anotherQueryPart
.In general,
QueryPart
equality is defined in terms ofQueryPart.toString()
equality. In other words, two query parts are considered equal if their rendered SQL (with inlined bind variables) is equal. This means that the two query parts do not necessarily have to be of the same type.Some
QueryPart
implementations may choose to override this behaviour for improved performance, asQueryPart.toString()
is an expensive operation, if called many times.
-
hashCode
public int hashCode()
Description copied from interface:QueryPart
Generate a hash code from thisQueryPart
.In general,
QueryPart
hash codes are the same as the hash codes generated fromQueryPart.toString()
. This guarantees consistent behaviour withQueryPart.equals(Object)
Some
QueryPart
implementations may choose to override this behaviour for improved performance, asQueryPart.toString()
is an expensive operation, if called many times.
-
toString
public String toString()
Description copied from interface:QueryPart
Render a SQL string representation of thisQueryPart
.For improved debugging, this renders a SQL string of this
QueryPart
with inlined bind variables. If thisQueryPart
isAttachable
, then the attachedConfiguration
may be used for rendering the SQL string, includingSQLDialect
andSettings
. Do note that mostQueryPart
instances are not attached to aConfiguration
, and thus there is no guarantee that the SQL string will make sense in the context of a specific database.
-
create
@Deprecated protected final DSLContext create()
Deprecated.- 3.11.0 - [#6722] - UseAttachable.configuration()
andConfiguration.dsl()
instead.Internal convenience method
-
create
@Deprecated protected final DSLContext create(Configuration configuration)
Deprecated.- 3.11.0 - [#6722] - UseAttachable.configuration()
andConfiguration.dsl()
instead.Internal convenience method
-
create
@Deprecated protected final DSLContext create(Context<?> ctx)
Deprecated.- 3.11.0 - [#6722] - UseAttachable.configuration()
andConfiguration.dsl()
instead.Internal convenience method
-
translate
protected final DataAccessException translate(String sql, SQLException e)
Internal convenience method
-
-