/*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Other licenses:
* -----------------------------------------------------------------------------
* Commercial licenses for this work are available. These replace the above
* ASL 2.0 and offer limited warranties, support, maintenance, and commercial
* database integrations.
*
* For more information, please visit: http://www.jooq.org/licenses
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*/
package org.jooq;
import java.io.Serializable;
import org.jooq.conf.Settings;
The common base type for all objects that can be used for query composition.
Author: Lukas Eder
/**
* The common base type for all objects that can be used for query composition.
*
* @author Lukas Eder
*/
public interface QueryPart extends Serializable {
Render a SQL string representation of this QueryPart
.
For improved debugging, this renders a SQL string of this
QueryPart
with inlined bind variables. If this
QueryPart
is Attachable
, then the attached Configuration
may be used for rendering the SQL string, including SQLDialect
and Settings
. Do note that most QueryPart
instances are not attached to a Configuration
, and thus there is no guarantee that the SQL string will make sense in the context of a specific database.
Returns: A SQL string representation of this QueryPart
/**
* Render a SQL string representation of this <code>QueryPart</code>.
* <p>
* For improved debugging, this renders a SQL string of this
* <code>QueryPart</code> with inlined bind variables. If this
* <code>QueryPart</code> is {@link Attachable}, then the attached
* {@link Configuration} may be used for rendering the SQL string, including
* {@link SQLDialect} and {@link Settings}. Do note that most
* <code>QueryPart</code> instances are not attached to a
* {@link Configuration}, and thus there is no guarantee that the SQL string
* will make sense in the context of a specific database.
*
* @return A SQL string representation of this <code>QueryPart</code>
*/
@Override
String toString();
Check whether this QueryPart
can be considered equal to
another QueryPart
.
In general, QueryPart
equality is defined in terms of 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, as toString()
is an expensive operation, if called many times.
Params: - object – The other
QueryPart
Returns: Whether the two query parts are equal
/**
* Check whether this <code>QueryPart</code> can be considered equal to
* another <code>QueryPart</code>.
* <p>
* In general, <code>QueryPart</code> equality is defined in terms of
* {@link #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.
* <p>
* Some <code>QueryPart</code> implementations may choose to override this
* behaviour for improved performance, as {@link #toString()} is an
* expensive operation, if called many times.
*
* @param object The other <code>QueryPart</code>
* @return Whether the two query parts are equal
*/
@Override
boolean equals(Object object);
Generate a hash code from this QueryPart
.
In general, QueryPart
hash codes are the same as the hash codes generated from toString()
. This guarantees consistent behaviour with equals(Object)
Some QueryPart
implementations may choose to override this behaviour for improved performance, as toString()
is an expensive operation, if called many times.
Returns: The QueryPart
hash code
/**
* Generate a hash code from this <code>QueryPart</code>.
* <p>
* In general, <code>QueryPart</code> hash codes are the same as the hash
* codes generated from {@link #toString()}. This guarantees consistent
* behaviour with {@link #equals(Object)}
* <p>
* Some <code>QueryPart</code> implementations may choose to override this
* behaviour for improved performance, as {@link #toString()} is an
* expensive operation, if called many times.
*
* @return The <code>QueryPart</code> hash code
*/
@Override
int hashCode();
}