R
- class type which contains members for columns of a row in a tablepublic class ScalarSelectOperation<R> extends SqlOperation<R>
Collection
objects.Constructor and Description |
---|
ScalarSelectOperation(Table<R> table)
Constructs standard sql select by primary key as:
SELECT c1, c2, c3, ... |
ScalarSelectOperation(Table<R> table,
java.lang.String whereConditionName)
Constructs standard sql select by primary key as:
SELECT c1, c2, c3, ... |
Modifier and Type | Method and Description |
---|---|
void |
close()
Cleans up after operation is no longer needed.
|
void |
execute()
Performs query.
|
int |
getMaximumRowsRead()
Gets the maximum number of rows to read from result set.
|
java.lang.String |
getOrderByName()
Gets order by name set with
setOrderBy(String) . |
protected OrderByTranslator<R> |
getOrderByTranslator()
Gets the
OrderByTranslator . |
protected java.sql.ResultSet |
getResultSet()
Gets the result set of the most recent select.
|
int |
getRowsReadCount()
Gets the count of rows that were read since the most recent
execute() . |
SelectCascadeFilter<?>[] |
getSelectCascadeFilters()
Gets the select filters used for this operation.
|
protected java.lang.String |
getSql()
Gets full sql statement to prepare.
|
protected void |
initBaseSql()
Sets the base sql with
SqlOperation.setBaseSql(String) . |
boolean |
isExecuted()
Indicates if
execute() has been invoked. |
boolean |
isLazySelectsCascades()
Reports that operation has at least one field with
SelectCascade.lazy() true. |
boolean |
isNotifyLazySelects()
Reports that
isLazySelectsCascades() is true and row is instanceof LazySelectable . |
protected void |
postRead(R row)
Invoked after reading columns into row.
|
protected void |
postReadCascade(R row)
Invoked after reading row.
|
protected java.util.List<CascadeOperation<R,?>> |
prepareCascades(java.lang.reflect.Field field)
Creates and prepares cascade operations based upon cascade annotations for a field.
|
protected void |
preRead(R row)
Invoked prior to reading columns into row.
|
protected void |
preReadCascade(R row)
Invoked prior to reading row.
|
R |
readNext()
Reads next row from current result set.
|
R |
select(java.lang.Object... parameters)
Set parameters, executes, reads one row, closes.
|
R |
select(R whereParameters)
Set parameters, executes, reads one row, closes.
|
void |
setMaximumRowsRead(int maximumRowsRead)
Sets the maximum number of rows to read from result set.
|
void |
setOrderBy(java.lang.String orderByName)
Sets order of results in list.
|
protected void |
setOrderByTranslator(OrderByTranslator<R> orderByTranslator)
Sets the
OrderByTranslator that creates the sql "order by" phrase based upon
the OrderBy annotations. |
void |
setParameters(java.lang.Object... parameters)
Sets any parameters to be used by operation.
|
void |
setRowParameters(R rowParameters)
Set parameters using values from a row object.
|
void |
setSelectCascadeFilters(SelectCascadeFilter<?>... selectCascadeFilters)
Sets filter to be used for selected rows.
|
cancel, cascade, closeCascades, closeStatement, createTargetField, getBaseSql, getConnection, getCustomSql, getNamedParameterMap, getNextParameter, getOperationTime, getParameter, getParameters, getPreparedSql, getPreparedStatement, getQueryTimeout, getRequiredCascades, getTable, getTargetTable, getTimingId, getWhereAnnotation, getWhereConditionName, getWhereTranslator, getWhereTranslator2, initOperationTime, isAutoGeneratedKeys, isCached, isCascade, isCascading, isIncludeIdentityColumns, isPrimaryKey, isReadOnly, isRequiredCascade, isTimings, logTimings, prepare, prepareCascades, prepareCheck, setAutoGeneratedKeys, setBaseSql, setCached, setCascade, setCustomSql, setIncludeIdentityColumns, setNamedParameterMap, setNextParameter, setParameter, setQueryTimeout, setReadOnly, setRequiredCascades, setTimingId, setTimings, setWhere, setWhereTranslator, setWhereTranslator2, writeColumns, writeParameter, writeParameters, writeWhere
public ScalarSelectOperation(Table<R> table) throws OperationException
table
- select from this tableOperationException
- if errorpublic ScalarSelectOperation(Table<R> table, java.lang.String whereConditionName) throws OperationException
table
- select from this tablewhereConditionName
- name of where condition to use ("primaryKey" to select
by primary key; empty string to select all rows in table)OperationException
- if errorpublic int getMaximumRowsRead()
Integer.MAX_VALUE
.Integer.MAX_VALUE
public void setMaximumRowsRead(int maximumRowsRead)
readNext()
and
SelectOperation.readAll()
. Limiting rows read is usefull to avoid
reading too many rows and thus creating memory or display problems.
In the future, when more databases support a standard way to limit rows, I will add support for SQL level limits through a method like "setMaximumRows(int)" and SQL "FETCH FIRST n ROWS ONLY".
maximumRowsRead
- 0..Integer.MAX_VALUE
public int getRowsReadCount()
execute()
.public void setRowParameters(R rowParameters)
setParameters(Object...)
.rowParameters
- where parameters are read from this object using fields defined by
Where
or the primary key defined by Column.primaryKey()
,
Column.identity()
, or Row.primaryKeyFields()
.public void setParameters(java.lang.Object... parameters)
Column.primaryKey()
or Where
annotation
or Row.primaryKeyFields()
.setParameters
in class SqlOperation<R>
parameters
- parameters as objects (not from row fields)public void execute() throws OperationException
readNext()
to get the next row selected.execute
in class SqlOperation<R>
OperationException
- if errorpublic boolean isExecuted()
execute()
has been invoked.public void close() throws OperationException
CascadeOperation
objects. This method should
be invoked when operation is no longer needed for proper JDBC clean up.close
in interface java.lang.AutoCloseable
close
in class SqlOperation<R>
OperationException
- if errorpublic R readNext() throws OperationException
OperationException
- if errorpublic void setOrderBy(java.lang.String orderByName) throws OperationException
orderByName
- name of order phrase to use as defined in OrderBy.name()
in OrderBy
annotation on row R; use empty string for no orderingOperationException
- if errorpublic java.lang.String getOrderByName()
setOrderBy(String)
.public R select(java.lang.Object... parameters) throws OperationException
parameters
- query parameters as objects (see setParameters(Object...)
)readNext()
OperationException
- if errorpublic R select(R whereParameters) throws OperationException
whereParameters
- query parameters are read from an existing row object
(see setRowParameters(Object)
)readNext()
OperationException
- if errorpublic boolean isLazySelectsCascades()
SelectCascade.lazy()
true. This
status is set during SqlOperation.prepare()
.public boolean isNotifyLazySelects()
isLazySelectsCascades()
is true and row is instanceof LazySelectable
. This is
set as an optimization so the readNext()
only tests a boolean to know when to invoke
LazySelectable.pendingLazySelects(org.sormula.Database)
.LazySelectable.pendingLazySelects(org.sormula.Database)
will be inovked for each row selectedpublic void setSelectCascadeFilters(SelectCascadeFilter<?>... selectCascadeFilters)
The filters set with this method will be used on all cascades that result from this operation.
Note: if table is cached, then cache will contain filtered rows. For subsequent selects, you
may want to clear cache with Table.getCache()
and Cache.evictAll()
or start with
new instance of Table
to avoid reading filtered rows.
selectCascadeFilters
- filter(s) to use or null for nonepublic SelectCascadeFilter<?>[] getSelectCascadeFilters()
protected OrderByTranslator<R> getOrderByTranslator()
OrderByTranslator
. See setOrderByTranslator(OrderByTranslator)
for details.protected void setOrderByTranslator(OrderByTranslator<R> orderByTranslator)
OrderByTranslator
that creates the sql "order by" phrase based upon
the OrderBy
annotations. Default is null. Set by setOrderBy(String)
.orderByTranslator
- order translator or null if no ordering desiredprotected java.lang.String getSql()
getSql()
.getSql
in class SqlOperation<R>
SqlOperation.prepare()
protected java.sql.ResultSet getResultSet()
protected void initBaseSql()
SqlOperation.setBaseSql(String)
.protected void preRead(R row)
row
- row that will get column values from tableprotected void postRead(R row)
row
- row that got column values from tableprotected void preReadCascade(R row) throws OperationException
SelectCascade.post()
is false.row
- row that will get column values from tableOperationException
protected void postReadCascade(R row) throws OperationException
SelectCascade.post()
is true.row
- row that got column values from tableOperationException
protected java.util.List<CascadeOperation<R,?>> prepareCascades(java.lang.reflect.Field field) throws OperationException
prepareCascades
in class SqlOperation<R>
field
- annotation is for this field of row class ROperationException
- if error