|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.sqlproc.engine.SqlEngine
org.sqlproc.engine.SqlQueryEngine
public class SqlQueryEngine
The primary SQL Processor class for the META SQL query execution.
Instance of this class holds one META SQL query and one optional Mapping rule.
For example there's a table PERSON with two columns - ID and NAME.
In the meta statements file statements.qry there's the next definition:
ALL_PEOPLE(QRY)= select ID @id, NAME @name from PERSON {= where {& id=:id} {& UPPER(name)=:+name} } {#1 order by ID} {#2 order by NAME} ;
In the case of SQL Processor initialization
JdbcEngineFactory sqlFactory = new JdbcEngineFactory(); sqlFactory.setMetaFilesNames("statements.qry"); // the meta statements file SqlQueryEngine sqlEngine = sqlFactory.getQueryEngine("ALL_PEOPLE"); // for the case it runs on the top of the JDBC stack Connection connection = DriverManager.getConnection("jdbc:hsqldb:mem:sqlproc", "sa", ""); SqlSession session = new JdbcSimpleSession(connection);there's created an instance of SqlQueryEngine with the name
ALL_PEOPLE
.
Next the query can be executed with one of the queryXXX
methods. For example there's a Java bean class
Person with attributes id and name. The invocation
List<Person> list = sqlEngine.query(session, Person.class, null, SqlQueryEngine.ASC_ORDER);produces the next SQL execution
select p.ID id, p.NAME name from PERSON p order by ID ASC
Next there's an instance person of the class Person with the value Jan
for the attribute name. The
invocation
List<Person> list = sqlEngine.query(session, Person.class, person, SqlOrder.getDescOrder(2));produces the next SQL execution
select p.ID id, p.NAME name from PERSON p where UPPER(name)=? order by NAME DESC
For more info please see the Tutorials.
Field Summary | |
---|---|
static SqlOrder |
ASC_ORDER
The ordering directive list with one ascending ordering rule. |
static SqlOrder |
DESC_ORDER
The ordering directive list with one descending ordering rule. |
static SqlOrder |
NO_ORDER
The ordering directive list with no ordering rule. |
Fields inherited from class org.sqlproc.engine.SqlEngine |
---|
features, logger, mapping, monitor, name, statement, typeFactory |
Constructor Summary | |
---|---|
SqlQueryEngine(String name,
SqlMetaStatement statement,
SqlMappingRule mapping,
SqlMonitor monitor,
Map<String,Object> features,
SqlTypeFactory typeFactory)
Creates a new instance of the SqlQueryEngine from one META SQL statement and one SQL mapping rule instances. |
|
SqlQueryEngine(String name,
SqlMetaStatement statement,
SqlMappingRule mapping,
SqlTypeFactory typeFactory)
Creates a new instance of the SqlQueryEngine from one META SQL statement and one SQL mapping rule instances. |
|
SqlQueryEngine(String name,
String statement,
String mapping,
SqlMonitor monitor,
Map<String,Object> features,
SqlTypeFactory typeFactory)
Creates a new instance of the SqlQueryEngine from one META SQL statement string and one SQL Mapping rule string. |
|
SqlQueryEngine(String name,
String statement,
String mapping,
SqlTypeFactory typeFactory)
Creates a new instance of the SqlQueryEngine from one META SQL query string and one SQL mapping rule string. |
Method Summary | ||
---|---|---|
private String |
countSql(SqlProcessResult processResult)
|
|
SqlMonitor |
getMonitor()
Returns the SQL Monitor instance for the runtime statistics gathering. |
|
String |
getName()
Returns the name of this META SQL, which uniquely identifies this instance. |
|
String |
getSql(Object dynamicInputValues,
Object staticInputValues,
SqlOrder order)
Because the SQL Processor is Data Driven Query engine, every input parameters can produce in fact different SQL query command. |
|
|
query(SqlSession session,
Class<E> resultClass)
Runs the META SQL query to obtain a list of database rows. |
|
|
query(SqlSession session,
Class<E> resultClass,
Object dynamicInputValues)
Runs the META SQL query to obtain a list of database rows. |
|
|
query(SqlSession session,
Class<E> resultClass,
Object dynamicInputValues,
int firstResult,
int maxResults)
Runs the META SQL query to obtain a list of database rows. |
|
|
query(SqlSession session,
Class<E> resultClass,
Object dynamicInputValues,
Object staticInputValues)
Runs the META SQL query to obtain a list of database rows. |
|
|
query(SqlSession session,
Class<E> resultClass,
Object dynamicInputValues,
Object staticInputValues,
int firstResult,
int maxResults)
Runs the META SQL query to obtain a list of database rows. |
|
|
query(SqlSession session,
Class<E> resultClass,
Object dynamicInputValues,
Object staticInputValues,
Map<String,Class<?>> moreResultClasses)
Runs the META SQL query to obtain a list of database rows. |
|
|
query(SqlSession session,
Class<E> resultClass,
Object dynamicInputValues,
Object staticInputValues,
SqlOrder order)
Runs the META SQL query to obtain a list of database rows. |
|
|
query(SqlSession session,
Class<E> resultClass,
Object dynamicInputValues,
Object staticInputValues,
SqlOrder order,
int maxTimeout,
int maxResults,
int firstResult)
Runs the META SQL query to obtain a list of database rows. |
|
|
query(SqlSession session,
Class<E> resultClass,
Object dynamicInputValues,
Object staticInputValues,
SqlOrder order,
int maxTimeout,
int maxResults,
int firstResult,
Map<String,Class<?>> moreResultClasses)
Runs the META SQL query to obtain a list of database rows. |
|
|
query(SqlSession session,
Class<E> resultClass,
Object dynamicInputValues,
Object staticInputValues,
SqlOrder order,
Map<String,Class<?>> moreResultClasses)
Runs the META SQL query to obtain a list of database rows. |
|
|
query(SqlSession session,
Class<E> resultClass,
Object dynamicInputValues,
SqlOrder order)
Runs the META SQL query to obtain a list of database rows. |
|
int |
queryCount(SqlSession session)
Runs the META SQL query to obtain the number of database rows. |
|
int |
queryCount(SqlSession session,
Object dynamicInputValues)
Runs the META SQL query to obtain the number of database rows. |
|
int |
queryCount(SqlSession session,
Object dynamicInputValues,
Object staticInputValues)
Runs the META SQL query to obtain the number of database rows. |
|
int |
queryCount(SqlSession session,
Object dynamicInputValues,
Object staticInputValues,
SqlOrder order,
int maxTimeout)
Runs META SQL query to obtain the number of database rows. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final SqlOrder NO_ORDER
public static final SqlOrder ASC_ORDER
public static final SqlOrder DESC_ORDER
Constructor Detail |
---|
public SqlQueryEngine(String name, String statement, String mapping, SqlTypeFactory typeFactory) throws SqlEngineException
SqlProcessorLoader
or SqlEngineLoader
for the SqlQueryEngine instances construction.
name
- the name of this SQL Engine instancestatement
- the META SQL query statementmapping
- the SQL mapping ruletypeFactory
- the factory for the META types construction
SqlEngineException
- in the case the provided statements are not compliant with the ANTLR grammarpublic SqlQueryEngine(String name, String statement, String mapping, SqlMonitor monitor, Map<String,Object> features, SqlTypeFactory typeFactory) throws SqlEngineException
SqlProcessorLoader
or SqlEngineLoader
for the SqlQueryEngine instances construction.
name
- the name of this SQL Engine instancestatement
- the META SQL query statementmapping
- the SQL mapping rulemonitor
- the SQL Monitor for the runtime statistics gatheringfeatures
- the optional SQL Processor featurestypeFactory
- the factory for the META types construction
SqlEngineException
- mainly in the case the provided statements are not compliant with the ANTLR grammarpublic SqlQueryEngine(String name, SqlMetaStatement statement, SqlMappingRule mapping, SqlTypeFactory typeFactory)
name
- the name of this SQL Engine instancestatement
- the pre-compiled META SQL query statementmapping
- the pre-compiled SQL mapping ruletypeFactory
- the factory for the META types constructionpublic SqlQueryEngine(String name, SqlMetaStatement statement, SqlMappingRule mapping, SqlMonitor monitor, Map<String,Object> features, SqlTypeFactory typeFactory)
name
- the name of this SQL Engine instancestatement
- the pre-compiled META SQL query statementmapping
- the pre-compiled SQL mapping rulemonitor
- the SQL Monitor for the runtime statistics gatheringfeatures
- the optional SQL Processor featurestypeFactory
- the factory for the META types constructionMethod Detail |
---|
public <E> List<E> query(SqlSession session, Class<E> resultClass) throws SqlProcessorException, SqlRuntimeException
query(SqlSession, Class, Object, Object, SqlOrder, int, int, int, Map)
.
SqlProcessorException
SqlRuntimeException
public <E> List<E> query(SqlSession session, Class<E> resultClass, Object dynamicInputValues) throws SqlProcessorException, SqlRuntimeException
query(SqlSession, Class, Object, Object, SqlOrder, int, int, int, Map)
.
SqlProcessorException
SqlRuntimeException
public <E> List<E> query(SqlSession session, Class<E> resultClass, Object dynamicInputValues, SqlOrder order) throws SqlProcessorException, SqlRuntimeException
query(SqlSession, Class, Object, Object, SqlOrder, int, int, int, Map)
.
SqlProcessorException
SqlRuntimeException
public <E> List<E> query(SqlSession session, Class<E> resultClass, Object dynamicInputValues, Object staticInputValues) throws SqlProcessorException, SqlRuntimeException
query(SqlSession, Class, Object, Object, SqlOrder, int, int, int, Map)
.
SqlProcessorException
SqlRuntimeException
public <E> List<E> query(SqlSession session, Class<E> resultClass, Object dynamicInputValues, Object staticInputValues, Map<String,Class<?>> moreResultClasses) throws SqlProcessorException, SqlRuntimeException
query(SqlSession, Class, Object, Object, SqlOrder, int, int, int, Map)
.
SqlProcessorException
SqlRuntimeException
public <E> List<E> query(SqlSession session, Class<E> resultClass, Object dynamicInputValues, Object staticInputValues, SqlOrder order) throws SqlProcessorException, SqlRuntimeException
query(SqlSession, Class, Object, Object, SqlOrder, int, int, int, Map)
.
SqlProcessorException
SqlRuntimeException
public <E> List<E> query(SqlSession session, Class<E> resultClass, Object dynamicInputValues, Object staticInputValues, SqlOrder order, Map<String,Class<?>> moreResultClasses) throws SqlProcessorException, SqlRuntimeException
query(SqlSession, Class, Object, Object, SqlOrder, int, int, int, Map)
.
SqlProcessorException
SqlRuntimeException
public <E> List<E> query(SqlSession session, Class<E> resultClass, Object dynamicInputValues, int firstResult, int maxResults) throws SqlProcessorException, SqlRuntimeException
query(SqlSession, Class, Object, Object, SqlOrder, int, int, int, Map)
.
SqlProcessorException
SqlRuntimeException
public <E> List<E> query(SqlSession session, Class<E> resultClass, Object dynamicInputValues, Object staticInputValues, int firstResult, int maxResults) throws SqlProcessorException, SqlRuntimeException
query(SqlSession, Class, Object, Object, SqlOrder, int, int, int, Map)
.
SqlProcessorException
SqlRuntimeException
public <E> List<E> query(SqlSession session, Class<E> resultClass, Object dynamicInputValues, Object staticInputValues, SqlOrder order, int maxTimeout, int maxResults, int firstResult) throws SqlProcessorException, SqlRuntimeException
query(SqlSession, Class, Object, Object, SqlOrder, int, int, int, Map)
.
SqlProcessorException
SqlRuntimeException
public <E> List<E> query(SqlSession session, Class<E> resultClass, Object dynamicInputValues, Object staticInputValues, SqlOrder order, int maxTimeout, int maxResults, int firstResult, Map<String,Class<?>> moreResultClasses) throws SqlProcessorException, SqlRuntimeException
session
- The SQL Engine session. It can work as a first level cache and the SQL query execution context. The
implementation depends on the stack, on top of which the SQL Processor works. For example it can be an
Hibernate session.resultClass
- The class used for the return values, the SQL query execution output. This class is also named as the
output class or the transport class, In fact it's a standard POJO class, which must include all the
attributes described in the mapping rule statement. This class itself and all its subclasses must have
public constructors without any parameters. All the attributes used in the mapping rule statement must
be accessible using public getters and setters. The instances of this class are created on the fly in
the process of query execution using the reflection API.dynamicInputValues
- The object used for the SQL statement dynamic input values. The class of this object is also named as
the input class or the dynamic parameters class. The exact class type isn't important, all the
parameters settled into the SQL prepared statement are picked up using the reflection API.staticInputValues
- The object used for the SQL statement static input values. The class of this object is also named as
the input class or the static parameters class. The exact class type isn't important, all the
parameters injected into the SQL query command are picked up using the reflection API. Compared to
dynamicInputValues input parameters, parameters in this class should't be produced by an end user to
prevent SQL injection threat!order
- The ordering directive list. Using the class SqlOrder the ordering rules can be chained. Every
ordering rule in this chain should correspond to one META SQL ordering statement.maxTimeout
- The max SQL execution time. This parameter can help to protect production system against ineffective
SQL query commands. The value is in milliseconds.maxResults
- The max number of SQL execution output rows, which can be returned in the result list. The primary
usage is to support the pagination.firstResult
- The first SQL execution output row to be returned in the case we need to skip some rows in the result
set. The primary usage is to support the pagination.moreResultClasses
- More result classes used for the return values, like the collections classes or the collections items.
They are used mainly for the one-to-one, one-to-many and many-to-many associations.
org.hibernate.SqlProcessorException
- in the case of any problem with ORM or JDBC stack
SqlRuntimeException
- in the case of any problem with the input/output values handling
SqlProcessorException
public int queryCount(SqlSession session) throws SqlProcessorException, SqlRuntimeException
queryCount(SqlSession, Object, Object, SqlOrder, int)
.
SqlProcessorException
SqlRuntimeException
public int queryCount(SqlSession session, Object dynamicInputValues) throws SqlProcessorException, SqlRuntimeException
queryCount(SqlSession, Object, Object, SqlOrder, int)
.
SqlProcessorException
SqlRuntimeException
public int queryCount(SqlSession session, Object dynamicInputValues, Object staticInputValues) throws SqlProcessorException, SqlRuntimeException
queryCount(SqlSession, Object, Object, SqlOrder, int)
.
SqlProcessorException
SqlRuntimeException
public int queryCount(SqlSession session, Object dynamicInputValues, Object staticInputValues, SqlOrder order, int maxTimeout) throws SqlProcessorException, SqlRuntimeException
session
- The SQL Engine session. It can work as a first level cache and the SQL query execution context. The
implementation depends on the stack, on top of which the SQL Processor works. For example it can be an
Hibernate session.dynamicInputValues
- The object used for the SQL statement dynamic input values. The class of this object is also named as
the input class or the dynamic parameters class. The exact class type isn't important, all the
parameters settled into the SQL prepared statement are picked up using the reflection API.staticInputValues
- The object used for the SQL statement static input values. The class of this object is also named as
the input class or the static parameters class. The exact class type isn't important, all the
parameters injected into the SQL query command are picked up using the reflection API. Compared to
dynamicInputValues input parameters, parameters in this class should't be produced by an end user to
prevent SQL injection threat!order
- The ordering directive list. Using the class SqlOrder the ordering rules can be chained. Every
ordering rule in this chain should correspond to one META SQL ordering statement.maxTimeout
- The max SQL execution time. This parameter can help to protect production system against ineffective
SQL query commands. The value is in milliseconds.
org.hibernate.SqlProcessorException
- in the case of any problem with ORM or JDBC stack stack
SqlRuntimeException
- in the case of any problem with the input/output values handling
SqlProcessorException
private String countSql(SqlProcessResult processResult)
public String getSql(Object dynamicInputValues, Object staticInputValues, SqlOrder order) throws SqlProcessorException, SqlRuntimeException
dynamicInputValues
- The object used for the SQL statement dynamic input values. The class of this object is also named as
the input class or the dynamic parameters class. The exact class type isn't important, all the
parameters settled into the SQL prepared statement are picked up using the reflection API.staticInputValues
- The object used for the SQL statement static input values. The class of this object is also named as
the input class or the static parameters class. The exact class type isn't important, all the
parameters injected into the SQL query command are picked up using the reflection API. Compared to
dynamicInputValues input parameters, parameters in this class should't be produced by an end user to
prevent SQL injection threat!order
- The ordering directive list. Using the class SqlOrder the ordering rules can be chained. Every
ordering rule in this chain should correspond to one META SQL ordering statement.
org.hibernate.SqlProcessorException
- in the case of any problem with ORM or JDBC stack
SqlRuntimeException
- in the case of any problem with the input/output values handling
SqlProcessorException
public String getName()
public SqlMonitor getMonitor()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |