Class SQuery<T extends SRecordInstance>
- java.lang.Object
- 
- simpleorm.dataset.SQuery<T>
 
- 
 public class SQuery<T extends SRecordInstance> extends java.lang.ObjectThe main Query interface that provides structured queries.For example:- Department d100q = session.findOrCreate(Department.DEPARTMENT, "100"); SQuery<Employee> query = new SQuery(Employee.EMPLOYEE) .eq(Employee.DEPARTMENT, d100q) // and .like(Employee.NAME, "%One%") .descending(Employee.SALARY); List<Employee> emps = session.query(query); This API is a little unusual in that there is only one SQuery instance created, and each of the methods update its state and then return this.The normal expansion of the query into SQL is performed by SQueryExecute in the SSessionJdbc package. The raw* methods can be used to poke any string into the SQL Where or Order By clauses in the order they appear. 
- 
- 
Nested Class SummaryNested Classes Modifier and Type Class Description static classSQuery.Joinstatic classSQuery.OrderBystatic classSQuery.Where
 - 
Constructor SummaryConstructors Constructor Description SQuery(SRecordMeta<T> record)SQuery(SRecordMeta<T> record, SQueryMode queryMode)SQuery(SRecordMeta<T> record, SQueryMode queryMode, SFieldScalar[] selectList)A new query object that can be .exeuted to produce an SResultSet.SQuery(SRecordMeta<T> record, SQueryMode queryMode, SSelectMode selectMode)SQuery(SRecordMeta<T> record, SSelectMode selectMode)
 - 
Method SummaryAll Methods Instance Methods Concrete Methods Modifier and Type Method Description SQuery<T>ascending(SFieldMeta field)rawOrderBy(field.columnName)SQuery<T>descending(SFieldMeta field)rawOrderBy(field.columnName) DESCSQuery<T>eq(SFieldMeta field, java.lang.Object value)Normally just addsfieldRelopParameter(field, "=", value).SQuery<T>eq(SFieldScalar field1, SFieldMeta field2)SQuery<T>equivalent(SFieldBoolean field, boolean value)True if boolean field == writeFieldValue(value).SQuery<T>fieldQuery(SFieldScalar field, java.lang.String clause)Generatesfield clause, ie the clause string is poked literally into the query.SQuery<T>fieldRelopParameter(SFieldScalar field, java.lang.String relop, java.lang.Object value)Generatesfield relop ?and then subsequently sets the parameter value.SQuery<T>fieldRelopParameter(SFieldScalar field1, java.lang.String relop, SFieldScalar field2)Generatesfield1 relop field2SQuery<T>ge(SFieldScalar field, double value)SQuery<T>ge(SFieldScalar field, int value)SQuery<T>ge(SFieldScalar field, long value)SQuery<T>ge(SFieldScalar field, java.lang.Object value)Just addsfieldRelopParameter(field, ">=", value)SQuery<T>ge(SFieldScalar field1, SFieldMeta field2)java.util.Set<SFieldReference>getJoinFields()java.util.List<SQuery.Join>getJoins()java.util.Map<SRecordMeta<?>,SSelectMode>getJoinTables()longgetLimit()longgetOffset()SQuery.OrderBygetOrderBy()SQueryModegetQueryMode()java.util.ArrayList<java.lang.Object>getQueryParameters()java.lang.StringgetRawSql()SRecordMeta<T>getRecordMeta()SFieldScalar[]getSelectList()SQuery.WheregetWhere()SQuery<T>gt(SFieldScalar field, double value)SQuery<T>gt(SFieldScalar field, int value)SQuery<T>gt(SFieldScalar field, long value)SQuery<T>gt(SFieldScalar field, java.lang.Object value)Just addsfieldRelopParameter(field, ">", value)SQuery<T>gt(SFieldScalar field1, SFieldMeta field2)SQuery<T>in(SFieldScalar field, java.lang.Object... values)Use or clause to simulate the in clauseSQuery<T>isFalse(SFieldBoolean field)SQuery<T>isNotNull(SFieldMeta field)Just addsfieldQuery(field, "IS NULL")SQuery<T>isNull(SFieldMeta field)Just addsfieldQuery(field, "IS NULL")SQuery<T>isTrue(SFieldBoolean field)shortcut for equivalent(field, true);SQuery<T>join(SFieldReference<?> reference)Join to another table, based on the specified reference that is in the query table.SQuery<T>join(SFieldReference<?> reference, SSelectMode selectMode)SQuery<T>le(SFieldScalar field, double value)SQuery<T>le(SFieldScalar field, int value)SQuery<T>le(SFieldScalar field, long value)SQuery<T>le(SFieldScalar field, java.lang.Object value)Just addsfieldRelopParameter(field, "<=", value)SQuery<T>le(SFieldScalar field1, SFieldMeta field2)SQuery<T>like(SFieldScalar field, java.lang.Object value)Just addsfieldRelopParameter(field, "like", value)SQuery<T>lt(SFieldScalar field, double value)SQuery<T>lt(SFieldScalar field, int value)SQuery<T>lt(SFieldScalar field, long value)SQuery<T>lt(SFieldScalar field, java.lang.Object value)Just addsfieldRelopParameter(field, "<", value)SQuery<T>lt(SFieldScalar field1, SFieldMeta field2)SQuery<T>ne(SFieldMeta field, java.lang.Object value)Just addsfieldRelopParameter(field, "<>", value).SQuery<T>ne(SFieldScalar field1, SFieldMeta field2)SQuery<T>rawJoin(java.lang.String sqlJoin, java.lang.Object... parameters)Add a join to the join statement.SQuery<T>rawOrderBy(java.lang.String raw)Add a clause to the OrderBy statement, eg.SQuery<T>rawOrderBy(SFieldMeta field, boolean ascending)SQuery<T>rawPredicate(java.lang.String predicate, java.lang.Object... parameters)Add predicate to the where class, eg.SQueryrawSql(java.lang.String rawSelectSql, java.lang.Object... parameters)Just specifies the entire SQL statement, including the Select.SQuery<T>setLimit(long lim)Set limitSQuery<T>setOffset(long off)Set offsetjava.lang.StringtoString()See SSession.queryToString for a fuller print out.
 
- 
- 
- 
Constructor Detail- 
SQuerypublic SQuery(SRecordMeta<T> record, SQueryMode queryMode, SFieldScalar[] selectList) A new query object that can be .exeuted to produce an SResultSet.
 - 
SQuerypublic SQuery(SRecordMeta<T> record, SSelectMode selectMode) 
 - 
SQuerypublic SQuery(SRecordMeta<T> record, SQueryMode queryMode) 
 - 
SQuerypublic SQuery(SRecordMeta<T> record, SQueryMode queryMode, SSelectMode selectMode) 
 - 
SQuerypublic SQuery(SRecordMeta<T> record) 
 
- 
 - 
Method Detail- 
getRecordMetapublic SRecordMeta<T> getRecordMeta() 
 - 
getLimitpublic long getLimit() 
 - 
getOffsetpublic long getOffset() 
 - 
rawJoinpublic SQuery<T> rawJoin(java.lang.String sqlJoin, java.lang.Object... parameters) Add a join to the join statement. Spaces before and after statement are added systematically.
 - 
rawPredicatepublic SQuery<T> rawPredicate(java.lang.String predicate, java.lang.Object... parameters) Add predicate to the where class, eg. "BUDGET > ?". Not normally called directly.
 - 
rawOrderBypublic SQuery<T> rawOrderBy(java.lang.String raw) Add a clause to the OrderBy statement, eg. "NAME DESC". Commas are added automatically.
 - 
rawOrderBypublic SQuery<T> rawOrderBy(SFieldMeta field, boolean ascending) 
 - 
rawSqlpublic SQuery rawSql(java.lang.String rawSelectSql, java.lang.Object... parameters) Just specifies the entire SQL statement, including the Select.
 - 
fieldRelopParameterpublic SQuery<T> fieldRelopParameter(SFieldScalar field, java.lang.String relop, java.lang.Object value) Generatesfield relop ?and then subsequently sets the parameter value. Eg.fieldRelopParameter(Employee.Name, "=", myName)
 - 
fieldRelopParameterpublic SQuery<T> fieldRelopParameter(SFieldScalar field1, java.lang.String relop, SFieldScalar field2) Generatesfield1 relop field2E.g. fieldRelopParameter(Order.QuantityRequired, "=", Order.QuantityReceived)Mainly useful for Joins. 
 - 
fieldQuerypublic SQuery<T> fieldQuery(SFieldScalar field, java.lang.String clause) Generatesfield clause, ie the clause string is poked literally into the query. Eg.fieldQuery(Employee.Name, "= 'Fred'")Use fieldRelopParameter instead for parameters determined at run time as blindly concatenating strings is dangerous. 
 - 
joinpublic SQuery<T> join(SFieldReference<?> reference) Join to another table, based on the specified reference that is in the query table. This peforms an eager lookup on the referenced tables, so avoiding the N+1 problem.Joins only work from the query table to tables directly liked by the reference. It is not currently possible to join a table to itself (eg. Employee.Manager). Normally the looked up records are also retrieved, although it is possible to specify selectMode = NONE if the join is only for the WHERE clause. Currently implemented as Inner joins, but will be fixed to be left outer joins. Note that this is only useful if the number of joined in records is substantial. For example, if there are 1,000 employees in 10 departments, then it is probably faster (and certainly simpler) to retrieve the departments lazily rather than retrieve the fields for the 10 departments 1000 times and throw them away each time. Note also that Subselects can be used to reference fields in the where clause without introduing outer join issues. 
 - 
joinpublic SQuery<T> join(SFieldReference<?> reference, SSelectMode selectMode) 
 - 
getJoinTablespublic java.util.Map<SRecordMeta<?>,SSelectMode> getJoinTables() 
 - 
getJoinFieldspublic java.util.Set<SFieldReference> getJoinFields() 
 - 
getSelectListpublic SFieldScalar[] getSelectList() 
 - 
eqpublic SQuery<T> eq(SFieldMeta field, java.lang.Object value) Normally just addsfieldRelopParameter(field, "=", value).If field is a reference it recursively expands the foreign keys, and value must be an instance of the same record type. value must not be null, you need the special case IS NULL test. (It would be possible to optimize this here, but what about field == field where one of them is null -- that would be inconsistent.) 
 - 
eqpublic SQuery<T> eq(SFieldScalar field1, SFieldMeta field2) 
 - 
equivalentpublic SQuery<T> equivalent(SFieldBoolean field, boolean value) True if boolean field == writeFieldValue(value). Ie. value is converted from bool to "Y"/"N" etc.
 - 
isTruepublic SQuery<T> isTrue(SFieldBoolean field) shortcut for equivalent(field, true);
 - 
isFalsepublic SQuery<T> isFalse(SFieldBoolean field) 
 - 
nepublic SQuery<T> ne(SFieldMeta field, java.lang.Object value) Just addsfieldRelopParameter(field, "<>", value).Note that there are few methods ne(SfieldMeta, int)etc. This is because 5 relops * 5 data types would require 25 methods! Java 1.5 boxing will (finally) make this unnecessary anyway.
 - 
nepublic SQuery<T> ne(SFieldScalar field1, SFieldMeta field2) 
 - 
isNullpublic SQuery<T> isNull(SFieldMeta field) Just addsfieldQuery(field, "IS NULL")
 - 
isNotNullpublic SQuery<T> isNotNull(SFieldMeta field) Just addsfieldQuery(field, "IS NULL")
 - 
gtpublic SQuery<T> gt(SFieldScalar field, java.lang.Object value) Just addsfieldRelopParameter(field, ">", value)
 - 
gtpublic SQuery<T> gt(SFieldScalar field, int value) 
 - 
gtpublic SQuery<T> gt(SFieldScalar field, long value) 
 - 
gtpublic SQuery<T> gt(SFieldScalar field, double value) 
 - 
gtpublic SQuery<T> gt(SFieldScalar field1, SFieldMeta field2) 
 - 
ltpublic SQuery<T> lt(SFieldScalar field, java.lang.Object value) Just addsfieldRelopParameter(field, "<", value)
 - 
ltpublic SQuery<T> lt(SFieldScalar field, int value) 
 - 
ltpublic SQuery<T> lt(SFieldScalar field, long value) 
 - 
ltpublic SQuery<T> lt(SFieldScalar field, double value) 
 - 
ltpublic SQuery<T> lt(SFieldScalar field1, SFieldMeta field2) 
 - 
lepublic SQuery<T> le(SFieldScalar field, java.lang.Object value) Just addsfieldRelopParameter(field, "<=", value)
 - 
lepublic SQuery<T> le(SFieldScalar field, int value) 
 - 
lepublic SQuery<T> le(SFieldScalar field, long value) 
 - 
lepublic SQuery<T> le(SFieldScalar field, double value) 
 - 
lepublic SQuery<T> le(SFieldScalar field1, SFieldMeta field2) 
 - 
gepublic SQuery<T> ge(SFieldScalar field, java.lang.Object value) Just addsfieldRelopParameter(field, ">=", value)
 - 
gepublic SQuery<T> ge(SFieldScalar field, int value) 
 - 
gepublic SQuery<T> ge(SFieldScalar field, long value) 
 - 
gepublic SQuery<T> ge(SFieldScalar field, double value) 
 - 
gepublic SQuery<T> ge(SFieldScalar field1, SFieldMeta field2) 
 - 
inpublic SQuery<T> in(SFieldScalar field, java.lang.Object... values) Use or clause to simulate the in clause
 - 
likepublic SQuery<T> like(SFieldScalar field, java.lang.Object value) Just addsfieldRelopParameter(field, "like", value)
 - 
ascendingpublic SQuery<T> ascending(SFieldMeta field) rawOrderBy(field.columnName)
 - 
descendingpublic SQuery<T> descending(SFieldMeta field) rawOrderBy(field.columnName) DESC
 - 
toStringpublic java.lang.String toString() See SSession.queryToString for a fuller print out.- Overrides:
- toStringin class- java.lang.Object
 
 - 
getQueryParameterspublic java.util.ArrayList<java.lang.Object> getQueryParameters() 
 - 
getJoinspublic java.util.List<SQuery.Join> getJoins() 
 - 
getOrderBypublic SQuery.OrderBy getOrderBy() 
 - 
getWherepublic SQuery.Where getWhere() 
 - 
getQueryModepublic SQueryMode getQueryMode() 
 - 
getRawSqlpublic java.lang.String getRawSql() 
 
- 
 
-