|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.cayenne.query.AbstractQuery
org.apache.cayenne.query.SQLTemplate
public class SQLTemplate
A query that executes unchanged (except for template preprocessing) "raw" SQL specified by the user.
SQLTemplate stores a dynamic template for the SQL query that supports parameters and customization using Velocity scripting language. The most straightforward use of scripting abilities is to build parameterized queries. For example:
SELECT ID, NAME FROM SOME_TABLE WHERE NAME LIKE $a
For advanced scripting options see "Scripting SQLTemplate" chapter in the User Guide.
SQLTemplate has a default template script
, but also it
allows to configure multiple templates and switch them dynamically. This way a single
query can have multiple "dialects" specific to a given database.
SQLTemplate supports multiple sets of parameters, so a single query can be executed
multiple times with different parameters. "Scrolling" through parameter list is done by
calling parametersIterator()
. This iterator goes over parameter sets,
returning a Map on each call to "next()"
Field Summary | |
---|---|
protected CapsStrategy |
columnNamesCapitalization
|
protected java.lang.String |
defaultTemplate
|
protected java.util.Map<java.lang.String,?>[] |
parameters
|
protected SQLResult |
result
|
protected java.util.Map<java.lang.String,java.lang.String> |
templates
|
Fields inherited from class org.apache.cayenne.query.AbstractQuery |
---|
dataMap, name, root |
Constructor Summary | |
---|---|
SQLTemplate()
Creates an empty SQLTemplate. |
|
SQLTemplate(java.lang.Class<?> rootClass,
java.lang.String defaultTemplate)
|
|
SQLTemplate(DataMap rootMap,
java.lang.String defaultTemplate)
Deprecated. since 3.1, use SQLTemplate(DataMap rootMap, String defaultTemplate, boolean isFetchingDataRows) instead |
|
SQLTemplate(DataMap rootMap,
java.lang.String defaultTemplate,
boolean isFetchingDataRows)
|
|
SQLTemplate(DbEntity rootEntity,
java.lang.String defaultTemplate)
|
|
SQLTemplate(ObjEntity rootEntity,
java.lang.String defaultTemplate)
|
|
SQLTemplate(java.lang.String objEntityName,
java.lang.String defaultTemplate)
|
Method Summary | |
---|---|
PrefetchTreeNode |
addPrefetch(java.lang.String prefetchPath)
Adds a prefetch. |
void |
addPrefetches(java.util.Collection<java.lang.String> prefetches)
Adds all prefetches from a provided collection. |
void |
clearPrefetches()
Clears all prefetches. |
Query |
createQuery(java.util.Map<java.lang.String,?> parameters)
Creates and returns a new SQLTemplate built using this query as a prototype and substituting template parameters with the values from the map. |
SQLAction |
createSQLAction(SQLActionVisitor visitor)
Calls sqlAction(this) on the visitor. |
void |
encodeAsXML(XMLEncoder encoder)
Prints itself as XML to the provided PrintWriter. |
java.lang.String[] |
getCacheGroups()
|
QueryCacheStrategy |
getCacheStrategy()
|
CapsStrategy |
getColumnNamesCapitalization()
Returns a column name capitalization policy applied to selecting queries. |
java.lang.String |
getCustomTemplate(java.lang.String key)
Returns template for key, or null if there is no template configured for this key. |
java.lang.String |
getDefaultTemplate()
Returns default SQL template for this query. |
int |
getFetchLimit()
|
int |
getFetchOffset()
|
QueryMetadata |
getMetaData(EntityResolver resolver)
Returns default select parameters. |
int |
getPageSize()
|
java.util.Map<java.lang.String,?> |
getParameters()
Utility method to get the first set of parameters, since most queries will only have one. |
PrefetchTreeNode |
getPrefetchTree()
|
SQLResult |
getResult()
|
int |
getStatementFetchSize()
|
java.lang.String |
getTemplate(java.lang.String key)
Returns a template for key, or a default template if a template for key is not found. |
java.util.Collection<java.lang.String> |
getTemplateKeys()
Returns a collection of configured template keys. |
void |
initWithProperties(java.util.Map<java.lang.String,?> properties)
Initializes query parameters using a set of properties. |
boolean |
isFetchingDataRows()
|
java.util.Iterator<?> |
parametersIterator()
Returns an iterator over parameter sets. |
int |
parametersSize()
Returns the number of parameter sets. |
SQLTemplate |
queryWithParameters(java.util.Map<java.lang.String,?>... parameters)
Returns a new query built using this query as a prototype and a new set of parameters. |
void |
removePrefetch(java.lang.String prefetch)
|
void |
removeTemplate(java.lang.String key)
|
void |
setCacheGroups(java.lang.String... cacheGroups)
|
void |
setCacheStrategy(QueryCacheStrategy strategy)
|
void |
setColumnNamesCapitalization(CapsStrategy columnNameCapitalization)
Sets a column name capitalization policy applied to selecting queries. |
void |
setDefaultTemplate(java.lang.String string)
Sets default SQL template for this query. |
void |
setFetchingDataRows(boolean flag)
|
void |
setFetchLimit(int fetchLimit)
|
void |
setFetchOffset(int fetchOffset)
|
void |
setPageSize(int pageSize)
|
void |
setParameters(java.util.Map<java.lang.String,?>... parameters)
Utility method to initialize query with one or more sets of parameters. |
void |
setResult(SQLResult resultSet)
Sets an optional explicit mapping of the result set. |
void |
setStatementFetchSize(int size)
Sets statement's fetch size (0 for no default size) |
void |
setTemplate(java.lang.String key,
java.lang.String template)
Adds a SQL template string for a given key. |
Methods inherited from class org.apache.cayenne.query.AbstractQuery |
---|
acceptVisitor, getDataMap, getName, getRoot, route, setDataMap, setName, setRoot, toString |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Methods inherited from interface org.apache.cayenne.query.Query |
---|
getDataMap, getName, route |
Methods inherited from interface org.apache.cayenne.configuration.ConfigurationNode |
---|
acceptVisitor |
Field Detail |
---|
protected java.lang.String defaultTemplate
protected java.util.Map<java.lang.String,java.lang.String> templates
protected java.util.Map<java.lang.String,?>[] parameters
protected CapsStrategy columnNamesCapitalization
protected SQLResult result
Constructor Detail |
---|
public SQLTemplate()
@Deprecated public SQLTemplate(DataMap rootMap, java.lang.String defaultTemplate)
public SQLTemplate(DataMap rootMap, java.lang.String defaultTemplate, boolean isFetchingDataRows)
public SQLTemplate(ObjEntity rootEntity, java.lang.String defaultTemplate)
public SQLTemplate(java.lang.Class<?> rootClass, java.lang.String defaultTemplate)
public SQLTemplate(DbEntity rootEntity, java.lang.String defaultTemplate)
public SQLTemplate(java.lang.String objEntityName, java.lang.String defaultTemplate)
Method Detail |
---|
public QueryMetadata getMetaData(EntityResolver resolver)
AbstractQuery
getMetaData
in interface Query
getMetaData
in class AbstractQuery
public SQLAction createSQLAction(SQLActionVisitor visitor)
createSQLAction
in interface Query
createSQLAction
in class AbstractQuery
public void encodeAsXML(XMLEncoder encoder)
encodeAsXML
in interface XMLSerializable
public void initWithProperties(java.util.Map<java.lang.String,?> properties)
public java.util.Iterator<?> parametersIterator()
public int parametersSize()
public SQLTemplate queryWithParameters(java.util.Map<java.lang.String,?>... parameters)
public Query createQuery(java.util.Map<java.lang.String,?> parameters)
createQuery
in interface ParameterizedQuery
public QueryCacheStrategy getCacheStrategy()
public void setCacheStrategy(QueryCacheStrategy strategy)
public java.lang.String[] getCacheGroups()
public void setCacheGroups(java.lang.String... cacheGroups)
public int getFetchLimit()
public void setFetchLimit(int fetchLimit)
public int getFetchOffset()
public void setFetchOffset(int fetchOffset)
public int getPageSize()
public void setPageSize(int pageSize)
public void setFetchingDataRows(boolean flag)
public boolean isFetchingDataRows()
public java.lang.String getDefaultTemplate()
public void setDefaultTemplate(java.lang.String string)
public java.lang.String getTemplate(java.lang.String key)
public java.lang.String getCustomTemplate(java.lang.String key)
getTemplate(String)
this method does not return a default template
as a failover strategy, rather it returns null.
public void setTemplate(java.lang.String key, java.lang.String template)
setDefaultTemplate(String)
public void removeTemplate(java.lang.String key)
public java.util.Collection<java.lang.String> getTemplateKeys()
public java.util.Map<java.lang.String,?> getParameters()
public void setParameters(java.util.Map<java.lang.String,?>... parameters)
public PrefetchTreeNode getPrefetchTree()
public PrefetchTreeNode addPrefetch(java.lang.String prefetchPath)
public void removePrefetch(java.lang.String prefetch)
public void addPrefetches(java.util.Collection<java.lang.String> prefetches)
public void clearPrefetches()
public CapsStrategy getColumnNamesCapitalization()
public void setColumnNamesCapitalization(CapsStrategy columnNameCapitalization)
public void setResult(SQLResult resultSet)
SQLResult
rules.
public SQLResult getResult()
public void setStatementFetchSize(int size)
public int getStatementFetchSize()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |