Package org.exolab.castor.persist.spi
Interface QueryExpression
- All Known Implementing Classes:
DB2QueryExpression
,DerbyQueryExpression
,HsqlQueryExpression
,InformixQueryExpression
,InstantDBQueryExpression
,InterbaseQueryExpression
,JDBCQueryExpression
,MySQLQueryExpression
,OracleQueryExpression
,PointbaseQueryExpression
,PostgreSQLQueryExpression
,ProgressQueryExpression
,SapDbQueryExpression
,SQLServerQueryExpression
,SybaseQueryExpression
public interface QueryExpression
Defines the interface for a query expression. The query
expression object is used to construct queries including
parameters, conditions and joins, and generates the SQL
statement for the underlying database.
A query experession object is created for each unique query, populated with the query parameters and the SQL statement is obtained from it at the proper time.
A query expression is generated from PersistenceFactory
,
see this interface for information on how to configure
it. The operators defined in this interface are part of
SQL 92 and the supported OQL syntax and are expected to
be supported by all query expressions.
- Version:
- $Revision: 8459 $ $Date: 2005-03-05 06:42:06 -0700 (Sat, 05 Mar 2005) $
- Author:
- Assaf Arkin
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final String
Between operator.static final String
Between and operator.static final String
Equality operator.static final String
Greater then operator.static final String
Greater then or equals operator.static final String
Less then operator.static final String
Less then or equals operator.static final String
Like operator.static final String
Inequality operator.static final String
Not like operator. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Add a column used in the query.void
addCondition
(String tableName, String columnName, String condOp, String value) Add a condition.void
addInnerJoin
(String leftTable, String[] leftColumn, String leftTableAlias, String rightTable, String[] rightColumn, String rightTableAlias) Add an inner join with an aliases for the tables.void
addLimitClause
(String limitClause) Adds an limit clause.void
addOffsetClause
(String offsetClause) Adds an offset clause.void
addOrderClause
(String orderClause) Adds an order by clause.void
addOuterJoin
(String leftTable, String[] leftColumn, String rightTable, String[] rightColumn, String rightTableAlias) Add an outer join.void
addParameter
(String tableName, String columnName, String condOp) Add a query paramater.void
Add an entire select clause to the query with one call.void
Add a table with an alias to the from clause.void
addWhereClause
(String whereClause) Adds a where clause.clone()
Returns a clone of the query expression that can be further modified.encodeColumn
(String tableName, String columnName) Encode a TableColumn for use in expressions.getStatement
(boolean writeLock) Return the query expression as an SQL statement.boolean
Indicates whether a RDBMS supports LIMIT clauses.boolean
Indicates whether a RDBMS supports OFFSET clauses.void
setDbMetaInfo
(DbMetaInfo dbInfo) Store database meta information.void
setDistinct
(boolean distinct) Set the query to be distinct.
-
Field Details
-
OP_EQUALS
Equality operator. (=)- See Also:
-
OP_NOT_EQUALS
Inequality operator. (<>)- See Also:
-
OP_GREATER
Greater then operator. (>)- See Also:
-
OP_GREATER_EQUALS
Greater then or equals operator. (>=)- See Also:
-
OP_LESS
Less then operator. (<)- See Also:
-
OP_LESS_EQUALS
Less then or equals operator. (<=)- See Also:
-
OP_LIKE
Like operator. (LIKE)- See Also:
-
OP_NOT_LIKE
Not like operator. (NOT LIKE)- See Also:
-
OP_BETWEEN
Between operator. (BETWEEN)- See Also:
-
OP_BETWEEN_AND
Between and operator. (AND)- See Also:
-
-
Method Details
-
addColumn
Add a column used in the query. Columns must be retrieved in the same order in which they were added to the query.- Parameters:
tableName
- The table namecolumnName
- The column name
-
addSelect
Add an entire select clause to the query with one call. The caller is responsible for making sure that all mentioned tables are included in the from clause.- Parameters:
selectClause
- The entire sql select clause without the word SELECT
-
setDistinct
void setDistinct(boolean distinct) Set the query to be distinct. No two rows which are the same will be returned.- Parameters:
distinct
- If the query should include DISTINCT in the SQL select.
-
addTable
Add a table with an alias to the from clause.- Parameters:
tableName
- The name of the table to add to the select clausetableAlias
- The name of the alias under which the where clauses will access it
-
addParameter
Add a query paramater.- Parameters:
tableName
- The table namecolumnName
- The column namecondOp
- The conditional operation
-
addCondition
Add a condition.- Parameters:
tableName
- The table namecolumnName
- The column namecondOp
- The conditional operationvalue
- The conditional value
-
encodeColumn
Encode a TableColumn for use in expressions.- Parameters:
tableName
- The table name.columnName
- The column name.
-
addWhereClause
Adds a where clause. Caller is responsible for making sure all tables mentioned in the where clause are included in the fromClause.- Parameters:
whereClause
- The WHERE clause to add (without the word WHERE).
-
addOrderClause
Adds an order by clause. Caller is responsible for making sure all tables mentioned in the order by clause are included in the fromClause.- Parameters:
orderClause
- The ORDER BY clause to add (without the words ORDER BY).
-
addLimitClause
Adds an limit clause.- Parameters:
limitClause
- The LIMIT clause to add (without the word LIMIT).- Throws:
SyntaxNotSupportedException
- If the LIMIT clause is not supported by the RDBMS.
-
addOffsetClause
Adds an offset clause.- Parameters:
offsetClause
- The OFFSET clause to add (without the word OFFSET).- Throws:
SyntaxNotSupportedException
- If the OFFSET clause is not supported by the RDBMS.
-
addInnerJoin
void addInnerJoin(String leftTable, String[] leftColumn, String leftTableAlias, String rightTable, String[] rightColumn, String rightTableAlias) Add an inner join with an aliases for the tables.- Parameters:
leftTable
- The table name on the left sideleftColumn
- The column names on the left sideleftTableAlias
- The alias name to use for the table on the left siderightTable
- The table name on the right siderightColumn
- The column names on the right siderightTableAlias
- The alias name to use for the table on the right side
-
addOuterJoin
void addOuterJoin(String leftTable, String[] leftColumn, String rightTable, String[] rightColumn, String rightTableAlias) Add an outer join. May use an inner join if outer joins are not supported.- Parameters:
leftTable
- The table name on the left sideleftColumn
- The column name on the left siderightTable
- The table name on the right siderightColumn
- The column name on the right siderightTableAlias
- The alias name to use for the table on the right side
-
getStatement
Return the query expression as an SQL statement. The resulting SQL is fed directly to a JDBC statement. writeLock is true if the query must obtain a write lock on the queried table.- Parameters:
writeLock
- True if a write lock is required- Returns:
- The SQL statement
- Throws:
QueryException
- The query cannot be constructed for this engine
-
clone
Object clone()Returns a clone of the query expression that can be further modified. -
isLimitClauseSupported
boolean isLimitClauseSupported()Indicates whether a RDBMS supports LIMIT clauses.- Returns:
- True if a LIMIT clause is supported.
-
isOffsetClauseSupported
boolean isOffsetClauseSupported()Indicates whether a RDBMS supports OFFSET clauses.- Returns:
- True if an OFFSET clause is supported.
-
setDbMetaInfo
Store database meta information.- Parameters:
dbInfo
- DbMetaInfo instance
-