|
|||||||||
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 java.lang.String |
defaultTemplate
|
protected java.util.Map[] |
parameters
|
protected boolean |
selecting
Deprecated. Since 1.2 this property is redundant. |
protected java.util.Map |
templates
|
Fields inherited from class org.apache.cayenne.query.AbstractQuery |
---|
name, root |
Fields inherited from interface org.apache.cayenne.query.GenericSelectQuery |
---|
CACHE_POLICY_DEFAULT, CACHE_POLICY_PROPERTY, FETCH_LIMIT_DEFAULT, FETCH_LIMIT_PROPERTY, FETCHING_DATA_ROWS_DEFAULT, FETCHING_DATA_ROWS_PROPERTY, LOCAL_CACHE, NO_CACHE, PAGE_SIZE_DEFAULT, PAGE_SIZE_PROPERTY, REFRESHING_OBJECTS_DEFAULT, REFRESHING_OBJECTS_PROPERTY, RESOLVING_INHERITED_DEFAULT, RESOLVING_INHERITED_PROPERTY, SHARED_CACHE |
Constructor Summary | |
---|---|
SQLTemplate()
Creates an empty SQLTemplate. |
|
SQLTemplate(boolean selecting)
Deprecated. Since 1.2 'selecting' property is redundant. |
|
SQLTemplate(java.lang.Class rootClass,
java.lang.String defaultTemplate)
|
|
SQLTemplate(java.lang.Class rootClass,
java.lang.String defaultTemplate,
boolean selecting)
Deprecated. Since 1.2 'selecting' property is redundant. |
|
SQLTemplate(DataMap rootMap,
java.lang.String defaultTemplate)
|
|
SQLTemplate(DataMap rootMap,
java.lang.String defaultTemplate,
boolean selecting)
Deprecated. Since 1.2 'selecting' property is redundant. |
|
SQLTemplate(DbEntity rootEntity,
java.lang.String defaultTemplate)
|
|
SQLTemplate(DbEntity rootEntity,
java.lang.String defaultTemplate,
boolean selecting)
Deprecated. Since 1.2 'selecting' property is redundant. |
|
SQLTemplate(ObjEntity rootEntity,
java.lang.String defaultTemplate)
|
|
SQLTemplate(ObjEntity rootEntity,
java.lang.String defaultTemplate,
boolean selecting)
Deprecated. Since 1.2 'selecting' property is redundant. |
|
SQLTemplate(java.lang.String objEntityName,
java.lang.String defaultTemplate)
|
|
SQLTemplate(java.lang.String objEntityName,
java.lang.String defaultTemplate,
boolean selecting)
Deprecated. Since 1.2 'selecting' property is redundant. |
Method Summary | |
---|---|
PrefetchTreeNode |
addPrefetch(java.lang.String prefetchPath)
Adds a prefetch. |
void |
addPrefetches(java.util.Collection prefetches)
Adds all prefetches from a provided collection. |
void |
clearPrefetches()
Clears all prefetches. |
Query |
createQuery(java.util.Map 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 |
getCachePolicy()
Returns query cache policy, which can be one of GenericSelectQuery.NO_CACHE ,
GenericSelectQuery.LOCAL_CACHE , or GenericSelectQuery.SHARED_CACHE . |
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()
Returns the limit on the maximium number of records that can be returned by this query. |
QueryMetadata |
getMetaData(EntityResolver resolver)
Returns default select parameters. |
int |
getPageSize()
Returns query page size. |
java.util.Map |
getParameters()
Utility method to get the first set of parameters, since most queries will only have one. |
PrefetchTreeNode |
getPrefetchTree()
Returns a root node of prefetch tree used by this query, or null of no prefetches are configured. |
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 |
getTemplateKeys()
Returns a collection of configured template keys. |
void |
initWithProperties(java.util.Map properties)
Initializes query parameters using a set of properties. |
boolean |
isFetchingDataRows()
Returns true if this query should produce a list of data rows as
opposed to DataObjects, false for DataObjects. |
boolean |
isRefreshingObjects()
Returns true if the query results should replace any currently
cached values, returns false otherwise. |
boolean |
isResolvingInherited()
Returns true if objects fetched via this query should be fully resolved according to the inheritance hierarchy. |
boolean |
isSelecting()
Deprecated. Since 1.2 'selecting' property is redundant. |
java.util.Iterator |
parametersIterator()
Returns an iterator over parameter sets. |
int |
parametersSize()
Returns the number of parameter sets. |
SQLTemplate |
queryWithParameters(java.util.Map parameters)
Returns a new query built using this query as a prototype and a new set of parameters. |
SQLTemplate |
queryWithParameters(java.util.Map[] 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 |
setCachePolicy(java.lang.String policy)
|
void |
setDefaultTemplate(java.lang.String string)
Sets default SQL template for this query. |
void |
setFetchingDataRows(boolean flag)
|
void |
setFetchLimit(int fetchLimit)
|
void |
setPageSize(int pageSize)
|
void |
setParameters(java.util.Map map)
Utility method to initialize query with only a single set of parameters. |
void |
setParameters(java.util.Map[] parameters)
|
void |
setRefreshingObjects(boolean flag)
|
void |
setResolvingInherited(boolean b)
|
void |
setSelecting(boolean b)
Deprecated. Since 1.2 'selecting' property is redundant. |
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 |
---|
getName, getRoot, route, 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 |
---|
getName, getRoot, route, setName, setRoot |
Methods inherited from interface org.apache.cayenne.query.Query |
---|
getName, getRoot, route, setName, setRoot |
Field Detail |
---|
protected java.lang.String defaultTemplate
protected java.util.Map templates
protected java.util.Map[] parameters
protected boolean selecting
Constructor Detail |
---|
public SQLTemplate()
public SQLTemplate(DataMap rootMap, java.lang.String defaultTemplate)
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)
public SQLTemplate(boolean selecting)
public SQLTemplate(DataMap rootMap, java.lang.String defaultTemplate, boolean selecting)
public SQLTemplate(ObjEntity rootEntity, java.lang.String defaultTemplate, boolean selecting)
public SQLTemplate(java.lang.Class rootClass, java.lang.String defaultTemplate, boolean selecting)
public SQLTemplate(DbEntity rootEntity, java.lang.String defaultTemplate, boolean selecting)
public SQLTemplate(java.lang.String objEntityName, java.lang.String defaultTemplate, boolean selecting)
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 properties)
public java.util.Iterator parametersIterator()
public int parametersSize()
public SQLTemplate queryWithParameters(java.util.Map parameters)
public SQLTemplate queryWithParameters(java.util.Map[] parameters)
public Query createQuery(java.util.Map parameters)
createQuery
in interface ParameterizedQuery
public java.lang.String getCachePolicy()
GenericSelectQuery
GenericSelectQuery.NO_CACHE
,
GenericSelectQuery.LOCAL_CACHE
, or GenericSelectQuery.SHARED_CACHE
. NO_CACHE is generally a default
policy.
getCachePolicy
in interface GenericSelectQuery
public void setCachePolicy(java.lang.String policy)
public int getFetchLimit()
GenericSelectQuery
getFetchLimit
in interface GenericSelectQuery
public void setFetchLimit(int fetchLimit)
public int getPageSize()
GenericSelectQuery
getPageSize
in interface GenericSelectQuery
public void setPageSize(int pageSize)
public void setFetchingDataRows(boolean flag)
public boolean isFetchingDataRows()
GenericSelectQuery
true
if this query should produce a list of data rows as
opposed to DataObjects, false
for DataObjects. This is a hint to
QueryEngine executing this query.
isFetchingDataRows
in interface GenericSelectQuery
public boolean isRefreshingObjects()
GenericSelectQuery
true
if the query results should replace any currently
cached values, returns false
otherwise. If
GenericSelectQuery.isFetchingDataRows()
returns true
, this setting is not
applicable and has no effect.
isRefreshingObjects
in interface GenericSelectQuery
public void setRefreshingObjects(boolean flag)
public boolean isResolvingInherited()
GenericSelectQuery
isResolvingInherited
in interface GenericSelectQuery
public void setResolvingInherited(boolean b)
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 getTemplateKeys()
public java.util.Map getParameters()
public void setParameters(java.util.Map map)
setParameters(Map[])
.
public void setParameters(java.util.Map[] parameters)
public boolean isSelecting()
public void setSelecting(boolean b)
public PrefetchTreeNode getPrefetchTree()
GenericSelectQuery
getPrefetchTree
in interface GenericSelectQuery
public PrefetchTreeNode addPrefetch(java.lang.String prefetchPath)
public void removePrefetch(java.lang.String prefetch)
public void addPrefetches(java.util.Collection prefetches)
public void clearPrefetches()
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |