|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectorg.hdpagination.dataaccess.support.QueryBuilder
org.hdpagination.dataaccess.support.orm.HBN3QueryCallbackWrapper
public class HBN3QueryCallbackWrapper
This class is used as a convenient wrapper class for HBN3QueryCallback.
It simplifies the way to generate an instance of HBN3QueryCallback based on the searching criteria fields.
Typically, there are two types of query parameters binding in the Hibernate Query. One is positioned parameter (JDBC-style ? parameters) and
another one is named parameter. This wrapper class is used for positioned parameter (JDBC-style) type. If you prefer named parameter type,
HBN3QueryCallbackNamedParamWrapper should be used.
The way to use HBN3QueryCallbackWrapper usually follows the following steps:
(1) Call its static factory method getInstance to get an initial instance of HBN3QueryCallbackWrapper.
(2) Call addRestriction methods from the instance.
(3) Call setOrderBy method if you want to sort the search result.
A sample code is as follows:
HBN3QueryCallbackWrapper callback = HBN3QueryCallbackWrapper.newInstance("from ProductVO p")
.addRestriction( Restrictions.eq("p.prodNo", crit.getProdNo()) )
.addRestriction( Restrictions.in("p.madeIn", crit.getMadeIn()) )
.addRestriction( Restrictions.contains("p.description", crit.getDescription()) )
.addRestriction( Restrictions.range("p.price", priceFrom, priceTo))
.setOrderBy("p.madeIn");
Behind the scene, the way HBN3QueryCallbackWrapper generates the full query statement can be described as:
'selectFrom' (the first argument from static factory methods newInstance) to construct an initial query statement.addRestriction). For each restriction: (1) It appends the keyword 'WHERE' or 'AND' to the query statement first.
If it is the first restriction, 'WHERE' is added; otherwise 'AND' is added.
(2) Then it appends the restriction's clause statement (e.g. p.description LIKE ?) to the query statement.
orderBy is set, then append the generated ORDER BY clause to the query statement.
| Field Summary |
|---|
| Fields inherited from class org.hdpagination.dataaccess.support.QueryBuilder |
|---|
asending, countStatement, orderBy, selectFrom |
| Constructor Summary | |
|---|---|
HBN3QueryCallbackWrapper(java.lang.String selectFrom)
Please note that the factory method newInstance(java.lang.String) is encouraged to use to create an object of
HBN3QueryCallbackWrapper rather than instantiating it directly. |
|
| Method Summary | |
|---|---|
HBN3QueryCallbackWrapper |
addRestriction(Restriction restriction)
Add restriction applied to the query SELECT statement. |
HBN3QueryCallbackWrapper |
addRestriction(java.lang.String clause)
Add restriction applied to the query SELECT statement. |
HBN3QueryCallbackWrapper |
addRestriction(java.lang.String clause,
java.util.List params)
Add restriction applied to the query SELECT statement. |
HBN3QueryCallbackWrapper |
addRestriction(java.lang.String clause,
java.lang.Object param)
Add restriction applied to the query SELECT statement. |
HBN3QueryCallbackWrapper |
addRestriction(java.lang.String clause,
java.lang.Object[] params)
Add restriction applied to the query SELECT statement. |
java.lang.String |
getCountRecordsQueryStatement()
Query statement to count total records. |
java.lang.String |
getQueryStatement()
Generate full query statement |
static HBN3QueryCallbackWrapper |
newInstance(java.lang.String selectFrom)
As a convenient (or shortcut) factory method to get an HBN3QueryCallbackWrapper object. |
java.util.List |
processQueriedResult(java.util.List queriedResult)
process the result from calling org.hibernate.Query.list() method
in Hibernate3QueryTemplate.query(QueryCallback callback, int pageSize, int pageNo),
and the value(java.util.List) returned by current method will be used as the return value of
Hibernate3QueryTemplate.query(QueryCallback callback, int pageSize, int pageNo). |
HBN3QueryCallbackWrapper |
setOrderBy(java.lang.String orderBy)
Set order by |
HBN3QueryCallbackWrapper |
setOrderBy(java.lang.String orderBy,
boolean ascending)
Set order by |
void |
setQueryResultProcessor(QueryResultProcessor queryResultProcessor)
Set an instance of QueryResultProcessor to process the query result (java.util.List)
before Session is closed. |
void |
setValues(org.hibernate.Query query)
Operate on Query instance to bind parameters |
| Methods inherited from class org.hdpagination.dataaccess.support.QueryBuilder |
|---|
getQueryOrder, setCountRecordsQueryStatement, setQueryOrder |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Methods inherited from interface org.hdpagination.core.QueryCallback |
|---|
getQueryOrder, setQueryOrder |
| Constructor Detail |
|---|
public HBN3QueryCallbackWrapper(java.lang.String selectFrom)
Please note that the factory method newInstance(java.lang.String) is encouraged to use to create an object of
HBN3QueryCallbackWrapper rather than instantiating it directly.
selectFrom - the "SELECT ... FROM .." or "FROM ..." statement for the HQL query. Ideally, it should not contain the
"WHERE" clause, otherwise when restrictions are added later, the full generated query statement will not be correct
(it contains more than one "WHERE" key words). The methods addRestriction are used to specify the "WHERE" clause.
It also should not contain the "ORDER BY" clause, the method setOrderBy is for this purpose.| Method Detail |
|---|
public HBN3QueryCallbackWrapper setOrderBy(java.lang.String orderBy)
orderBy - the column after the key word ORDER BY in 'ORDER BY' clause
public HBN3QueryCallbackWrapper setOrderBy(java.lang.String orderBy,
boolean ascending)
orderBy - the column after the key word ORDER BY in 'ORDER BY' clauseascending - if sorted in ascending order
public void setQueryResultProcessor(QueryResultProcessor queryResultProcessor)
QueryResultProcessor to process the query result (java.util.List)
before Session is closed. Its main purpose is to allow you to trigger lazy loading before
Session is closed. See sample code is provided in QueryResultProcessor
(Event that sample code is for JPA, but code will be very similar for Hibernate).
queryResultProcessor - public HBN3QueryCallbackWrapper addRestriction(Restriction restriction)
SELECT statement.
If the argument 'restriction' is not null, the restriction will be appended to the WHERE
clause of the SELECT statement to filter the search result. Otherwise, the restriction will not be appended.
Typically, this method is used together with one of static factory methods from Restrictions. Restrictions
provides some static factory methods to generate object of Restriction conditionally based on the parameter value.
A general rule for some of its simple factory methods (eq, gt, ge, lt, le, contains) is:
java.lang.String), the method returns null. As a result,the restriction will not
be added.
In a typical search scenario, only if the search criteria field is provided (e.g. its value is not null and empty), the restriction should be applied.
This method particularly suits this scenario. You can avoid coding the annoying IF .. ELSE checking by doing this.
restriction - If the argument is null, the restriction is not applied to the query.
public HBN3QueryCallbackWrapper addRestriction(java.lang.String clause)
SELECT statement. The restriction will be appended to the WHERE clause of the
SELECT statement to filter the search result.
clause - The WHERE clause fragment (after prefixing "WHERE" or "AND" keywords) will be appended to the
SELECT statement.
Please note that the key words "WHERE" or "AND" should be excluded from this clause fragment. When generating the full query statement,
the framework knows when to prefix "WHERE" or "AND". The clause fragment should not contain '?' IN parameter placeholder.
This argument can not be null or blank.
public HBN3QueryCallbackWrapper addRestriction(java.lang.String clause,
java.lang.Object param)
SELECT statement. The restriction will be appended to the WHERE clause of the
SELECT statement to filter the search result.
clause - The WHERE clause fragment (after prefixing "WHERE" or "AND" keywords) will be appended to the
SELECT statement.
Please note that the key words "WHERE" or "AND" should be excluded from this clause fragment. When generating the full query statement,
the framework knows when to prefix "WHERE" or "AND". The clause fragment should contain ONE and ONLY ONE '?' IN parameter placeholder.
This argument can not be null or blank.param - parameter binding to the '?' IN parameter placeholder in the clause argument. It should be a valid type to call the method
org.hibernate.Query.setParameter(int position, Object val) as the second argument.
This argument can not be null.
public HBN3QueryCallbackWrapper addRestriction(java.lang.String clause,
java.lang.Object[] params)
SELECT statement. The restriction will be appended to the WHERE clause of the
SELECT statement to filter the search result.
clause - The WHERE clause fragment (after prefixing "WHERE" or "AND" keywords) will be appended to the
SELECT statement.
Please note that the key words "WHERE" or "AND" should be excluded from this clause fragment. When generating the full query statement,
the framework knows when to prefix "WHERE" or "AND".
The clause fragment can contain multiple '?' IN parameter placeholders, and the number of placeholders
must match the number of elements in the params argument.
This argument can not be null or blank.params - the parameter values binding to the '?' IN parameter placeholders in the clause argument.
Its elements should be a valid type to call the method org.hibernate.Query.setParameter(int position, Object val) as the second argument.
This argument can not be null and should contain at least one element.
public HBN3QueryCallbackWrapper addRestriction(java.lang.String clause,
java.util.List params)
SELECT statement. The restriction will be appended to the WHERE clause of the
SELECT statement to filter the search result.
clause - The WHERE clause fragment (after prefixing "WHERE" or "AND" sql keywords) will be appended to the
SELECT statement.
Please note that the key words "WHERE" or "AND" should be excluded from this clause fragment. When generating the full query statement,
the framework knows when to prefix "WHERE" or "AND".
The clause fragment can contain multiple '?' IN parameter placeholders, and the number of placeholders
must match the number of elements in the params argument.
This argument can not be null or blank.params - the parameter values binding to the '?' IN parameter placeholders in the clause argument.
Its elements should be a valid type to call the method org.hibernate.Query.setParameter(int position, Object val) as the second argument.
This argument can not be null and should contain at least one element.
public void setValues(org.hibernate.Query query)
HBN3QueryCallbackQuery instance to bind parameters
setValues in interface HBN3QueryCallbackpublic java.lang.String getQueryStatement()
getQueryStatement in interface QueryCallbackpublic java.lang.String getCountRecordsQueryStatement()
QueryBuilderQueryTemplate will do some auto translation to generate the "count query statement"
based on "queryStatement" property and related persistence technology or database provides (e.g.
the way of translation is different between Hibernate and JDBC, Oracle and DB2).
getCountRecordsQueryStatement in interface QueryCallbackgetCountRecordsQueryStatement in class QueryBuilderpublic java.util.List processQueriedResult(java.util.List queriedResult)
HBN3QueryCallbackorg.hibernate.Query.list() method
in Hibernate3QueryTemplate.query(QueryCallback callback, int pageSize, int pageNo),
and the value(java.util.List) returned by current method will be used as the return value of
Hibernate3QueryTemplate.query(QueryCallback callback, int pageSize, int pageNo).
processQueriedResult in interface HBN3QueryCallbackpublic static HBN3QueryCallbackWrapper newInstance(java.lang.String selectFrom)
HBN3QueryCallbackWrapper object.
Please note that the factory methods are encouraged to use to create an object of HBN3QueryCallbackWrapper rather than instantiating it directly.
selectFrom - the "SELECT ... FROM .." or "FROM ..." statement for the HQL query. Ideally, it should not contain the
"WHERE" clause, otherwise when restrictions are added later, the full generated query statement will not be correct
(it contains more than one "WHERE" key words). The methods addRestriction are used to specify the "WHERE" clause.
It also should not contain the "ORDER BY" clause, the method setOrderBy is for this purpose.
This argument can not be null or empty.
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||