com.j256.ormlite.stmt
Class QueryBuilder<T,ID>

java.lang.Object
  extended by com.j256.ormlite.stmt.StatementBuilder<T,ID>
      extended by com.j256.ormlite.stmt.QueryBuilder<T,ID>

public class QueryBuilder<T,ID>
extends StatementBuilder<T,ID>

Assists in building sql query (SELECT) statements for a particular table in a particular database.

Here is a good tutorial of SQL commands.

Author:
graywatson

Nested Class Summary
static class QueryBuilder.InternalQueryBuilderWrapper
          Internal class used to expose methods to internal classes but through a wrapper instead of a builder.
 
Nested classes/interfaces inherited from class com.j256.ormlite.stmt.StatementBuilder
StatementBuilder.StatementType
 
Field Summary
 
Fields inherited from class com.j256.ormlite.stmt.StatementBuilder
databaseType, limit, offset, tableInfo, type
 
Constructor Summary
QueryBuilder(DatabaseType databaseType, TableInfo<T,ID> tableInfo, Dao<T,ID> dao)
           
 
Method Summary
protected  void appendStatementEnd(StringBuilder sb)
          Append the end of our statement string to the StringBuilder.
protected  void appendStatementStart(StringBuilder sb, List<ArgumentHolder> argList)
          Append the start of our statement string to the StringBuilder.
 QueryBuilder<T,ID> distinct()
          Add "DISTINCT" clause to the SQL query statement.
protected  FieldType[] getResultFieldTypes()
          Get the result array from our statement after the StatementBuilder.appendStatementStart(StringBuilder, List) was called.
 QueryBuilder<T,ID> groupBy(String columnName)
          Add "GROUP BY" clause to the SQL query statement.
 QueryBuilder<T,ID> groupByRaw(String rawSql)
          Add a raw SQL "GROUP BY" clause to the SQL query statement.
 CloseableIterator<T> iterator()
          A short cut for Dao.iterator(prepare()).
 QueryBuilder<T,ID> limit(Integer maxRows)
          Limit the output to maxRows maximum number of rows.
 QueryBuilder<T,ID> offset(Integer startRow)
          Start the output at this row number.
 QueryBuilder<T,ID> orderBy(String columnName, boolean ascending)
          Add "ORDER BY" clause to the SQL query statement.
 QueryBuilder<T,ID> orderByRaw(String rawSql)
          Add raw SQL "ORDER BY" clause to the SQL query statement.
 PreparedQuery<T> prepare()
          Build and return a prepared query that can be used by Dao.query(PreparedQuery) or Dao.iterator(PreparedQuery) methods.
 List<T> query()
          A short cut for Dao.query(prepare()).
 QueryBuilder<T,ID> selectColumns(Iterable<String> columns)
          Add columns to be returned by the SELECT query.
 QueryBuilder<T,ID> selectColumns(String... columns)
          Add columns to be returned by the SELECT query.
 QueryBuilder<T,ID> selectRaw(String... columns)
          Add raw columns or aggregate functions (COUNT, MAX, ...) to the query.
 QueryBuilder<T,ID> setCountOf(boolean countOf)
          Set whether or not we should only return the count of the results.
 
Methods inherited from class com.j256.ormlite.stmt.StatementBuilder
appendStatementString, prepareStatement, prepareStatementString, setWhere, verifyColumnName, where
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

QueryBuilder

public QueryBuilder(DatabaseType databaseType,
                    TableInfo<T,ID> tableInfo,
                    Dao<T,ID> dao)
Method Detail

prepare

public PreparedQuery<T> prepare()
                         throws SQLException
Build and return a prepared query that can be used by Dao.query(PreparedQuery) or Dao.iterator(PreparedQuery) methods. If you change the where or make other calls you will need to re-call this method to re-prepare the statement for execution.

Throws:
SQLException

selectColumns

public QueryBuilder<T,ID> selectColumns(String... columns)
Add columns to be returned by the SELECT query. If no columns are selected then all columns are returned by default. For classes with id columns, the id column is added to the select list automagically.


selectColumns

public QueryBuilder<T,ID> selectColumns(Iterable<String> columns)
Add columns to be returned by the SELECT query. If no columns are selected then all columns are returned by default. For classes with id columns, the id column is added to the select list automagically.


selectRaw

public QueryBuilder<T,ID> selectRaw(String... columns)
Add raw columns or aggregate functions (COUNT, MAX, ...) to the query. This will turn the query into something only suitable for the Dao.queryRaw(String, String...) type of statement.


groupBy

public QueryBuilder<T,ID> groupBy(String columnName)
Add "GROUP BY" clause to the SQL query statement.

NOTE: Use of this means that the resulting objects may not have a valid ID column value so cannot be deleted or updated.


groupByRaw

public QueryBuilder<T,ID> groupByRaw(String rawSql)
Add a raw SQL "GROUP BY" clause to the SQL query statement. This should not include the "GROUP BY".


orderBy

public QueryBuilder<T,ID> orderBy(String columnName,
                                  boolean ascending)
Add "ORDER BY" clause to the SQL query statement.


orderByRaw

public QueryBuilder<T,ID> orderByRaw(String rawSql)
Add raw SQL "ORDER BY" clause to the SQL query statement. This should not include the "ORDER BY".


distinct

public QueryBuilder<T,ID> distinct()
Add "DISTINCT" clause to the SQL query statement.

NOTE: Use of this means that the resulting objects may not have a valid ID column value so cannot be deleted or updated.


limit

public QueryBuilder<T,ID> limit(Integer maxRows)
Limit the output to maxRows maximum number of rows. Set to null for no limit (the default).


offset

public QueryBuilder<T,ID> offset(Integer startRow)
                          throws SQLException
Start the output at this row number. Set to null for no offset (the default). If you are paging through a table, you should consider using the Dao.iterator() method instead which handles paging with a database cursor. Otherwise, if you are paging you probably want to specify a orderBy(String, boolean).

NOTE: This is not supported for all databases. Also, for some databases, the limit _must_ also be specified since the offset is an argument of the limit.

Throws:
SQLException

setCountOf

public QueryBuilder<T,ID> setCountOf(boolean countOf)
Set whether or not we should only return the count of the results.


query

public List<T> query()
              throws SQLException
A short cut for Dao.query(prepare()). Dao.query(PreparedQuery).

Throws:
SQLException

iterator

public CloseableIterator<T> iterator()
                              throws SQLException
A short cut for Dao.iterator(prepare()). Dao.iterator(PreparedQuery).

Throws:
SQLException

appendStatementStart

protected void appendStatementStart(StringBuilder sb,
                                    List<ArgumentHolder> argList)
                             throws SQLException
Description copied from class: StatementBuilder
Append the start of our statement string to the StringBuilder.

Specified by:
appendStatementStart in class StatementBuilder<T,ID>
Throws:
SQLException

getResultFieldTypes

protected FieldType[] getResultFieldTypes()
Description copied from class: StatementBuilder
Get the result array from our statement after the StatementBuilder.appendStatementStart(StringBuilder, List) was called. This will be null except for the QueryBuilder.

Overrides:
getResultFieldTypes in class StatementBuilder<T,ID>

appendStatementEnd

protected void appendStatementEnd(StringBuilder sb)
                           throws SQLException
Description copied from class: StatementBuilder
Append the end of our statement string to the StringBuilder.

Specified by:
appendStatementEnd in class StatementBuilder<T,ID>
Throws:
SQLException


This content is licensed by Gray Watson under the Creative Commons Attribution-Share Alike 3.0 License.