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.
OpBetween
public static final String OpBetween
Between operator. (BETWEEN)
OpBetweenAnd
public static final String OpBetweenAnd
Between and operator. (AND)
OpEquals
public static final String OpEquals
Equality operator. (=)
OpGreater
public static final String OpGreater
Greater then operator. (>)
OpGreaterEquals
public static final String OpGreaterEquals
Greater then or equals operator. (>=)
OpLess
public static final String OpLess
Less then operator. (<)
OpLessEquals
public static final String OpLessEquals
Less then or equals operator. (<=)
OpLike
public static final String OpLike
Like operator. (LIKE)
OpNotEquals
public static final String OpNotEquals
Inequality operator. (<>)
OpNotLike
public static final String OpNotLike
Not like operator. (NOT LIKE)
addColumn
public void addColumn(String tableName,
String columnName)
Add a column used in the query. Columns must be retrieved in
the same order in which they were added to the query.
tableName
- The table namecolumnName
- The column name
addCondition
public void addCondition(String tableName,
String columnName,
String condOp,
String value)
Add a condition.
tableName
- The table namecolumnName
- The column namecondOp
- The conditional operationvalue
- The conditional value
addInnerJoin
public void addInnerJoin(String leftTable,
String leftColumn,
String rightTable,
String rightColumn)
Add an inner join.
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 side
addInnerJoin
public void addInnerJoin(String leftTable,
String leftColumn,
String leftTableAlias,
String rightTable,
String rightColumn,
String rightTableAlias)
Add an inner join with an aliases for the tables
leftTable
- The table name on the left sideleftColumn
- The column name 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 name on the right siderightTableAlias
- The alias name to use for the table on the right side
addInnerJoin
public void addInnerJoin(String leftTable,
String[] leftColumn,
String leftTableAlias,
String rightTable,
String[] rightColumn,
String rightTableAlias)
Add an inner join with an aliases for the tables
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
addInnerJoin
public void addInnerJoin(String leftTable,
String[] leftColumn,
String rightTable,
String[] rightColumn)
Add an inner join
leftTable
- The table name on the left sideleftColumn
- The column names on the left siderightTable
- The table name on the right siderightColumn
- The column names on the right side
addLimitClause
public void addLimitClause(String limitClause)
Adds an limit clause.
limitClause
- The LIMIT clause to add (without the word
LIMIT).
addOrderClause
public void addOrderClause(String orderClause)
Adds an order by clause. Caller is responsible for making sure all
tables mentioned in the order by clause are included in the fromClause.
orderClause
- The ORDER BY clause to add (without the words
ORDER BY).
addOuterJoin
public void addOuterJoin(String leftTable,
String leftColumn,
String rightTable,
String rightColumn)
Add an outer join. May use an inner join if outer
joins are not supported.
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 side
addOuterJoin
public 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.
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
addOuterJoin
public void addOuterJoin(String leftTable,
String[] leftColumn,
String rightTable,
String[] rightColumn)
addOuterJoin
public void addOuterJoin(String leftTable,
String[] leftColumn,
String rightTable,
String[] rightColumn,
String rightTableAlias)
addParameter
public void addParameter(String tableName,
String columnName,
String condOp)
Add a query paramater.
tableName
- The table namecolumnName
- The column namecondOp
- The conditional operation
addSelect
public void addSelect(String selectClause)
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.
selectClause
- The entire sql select clause without the word SELECT
addTable
public void addTable(String tableName)
Add a table to the from clause.
tableName
- The name of the table to add to the select clause
addTable
public void addTable(String tableName,
String tableAlias)
Add a table with an alias to the from clause.
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
addWhereClause
public void addWhereClause(String whereClause)
Adds a where clause. Caller is responsible for making sure all tables
mentioned in the where clause are included in the fromClause.
whereClause
- The WHERE clause to add (without the word WHERE).
clone
public Object clone()
Returns a clone of the query expression that can be further
modified.
encodeColumn
public String encodeColumn(String tableName,
String columnName)
Encode a TableColumn for use in expressions
tableName
- The table namecolumnName
- The column name
getStatement
public String getStatement(boolean writeLock)
throws QueryException
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.
writeLock
- True if a write lock is required
setDistinct
public void setDistinct(boolean distinct)
Set the query to be distinct. No two rows which are the same will be returned.
distinct
- If the query should include DISTINCT in the SQL select.