|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface SqlQuery
Query object for performing native SQL queries that return SqlRow's.
Firstly note that you can use your own sql queries with entity beans by using the SqlSelect annotation. This should be your first approach when wanting to use your own SQL queries.
If ORM Mapping is too tight and constraining for your problem then SqlQuery could be a good approach.
The returned SqlRow objects are similar to a LinkedHashMap with some type conversion support added.
// its typically a good idea to use a named query // and put the sql in the orm.xml instead of in your code String sql = "select id, name from customer where name like :name and status_code = :status"; SqlQuery sqlQuery = Ebean.createSqlQuery(sql); sqlQuery.setParameter("name", "Acme%"); sqlQuery.setParameter("status", "ACTIVE"); // execute the query returning a List of MapBean objects List<SqlRow> list = sqlQuery.findList();
Method Summary | |
---|---|
void |
cancel()
Cancel the query if support by the underlying database and driver. |
SqlFutureList |
findFutureList()
Execute find list SQL query in a background thread. |
List<SqlRow> |
findList()
Execute the query returning a list. |
Map<?,SqlRow> |
findMap()
Execute the query returning a map. |
Set<SqlRow> |
findSet()
Execute the query returning a set. |
SqlRow |
findUnique()
Execute the query returning a single row or null. |
SqlQuery |
setBackgroundFetchAfter(int backgroundFetchAfter)
Set the index after which fetching continues in a background thread. |
SqlQuery |
setBufferFetchSizeHint(int bufferFetchSizeHint)
A hint which for JDBC translates to the Statement.fetchSize(). |
SqlQuery |
setFirstRow(int firstRow)
Set the index of the first row of the results to return. |
SqlQuery |
setListener(SqlQueryListener queryListener)
Set a listener to process the query on a row by row basis. |
SqlQuery |
setMapKey(String mapKey)
Set the column to use to determine the keys for a Map. |
SqlQuery |
setMaxRows(int maxRows)
Set the maximum number of query results to return. |
SqlQuery |
setParameter(int position,
Object value)
The same as bind for positioned parameters. |
SqlQuery |
setParameter(String name,
Object value)
The same as bind for named parameters. |
SqlQuery |
setTimeout(int secs)
Set a timeout on this query. |
Method Detail |
---|
void cancel()
This must be called from a different thread to the one executing the query.
List<SqlRow> findList()
Set<SqlRow> findSet()
Map<?,SqlRow> findMap()
SqlRow findUnique()
If this query finds 2 or more rows then it will throw a PersistenceException.
SqlFutureList findFutureList()
This returns a Future object which can be used to cancel, check the execution status (isDone etc) and get the value (with or without a timeout).
SqlQuery setParameter(String name, Object value)
SqlQuery setParameter(int position, Object value)
SqlQuery setListener(SqlQueryListener queryListener)
It this case the rows are not loaded into the persistence context and instead can be processed by the query listener.
Use this when you want to process a large query and do not want to hold the entire query result in memory.
SqlQuery setFirstRow(int firstRow)
SqlQuery setMaxRows(int maxRows)
SqlQuery setBackgroundFetchAfter(int backgroundFetchAfter)
SqlQuery setMapKey(String mapKey)
SqlQuery setTimeout(int secs)
This will typically result in a call to setQueryTimeout() on a preparedStatement. If the timeout occurs an exception will be thrown - this will be a SQLException wrapped up in a PersistenceException.
secs
- the query timeout limit in seconds. Zero means there is no limit.SqlQuery setBufferFetchSizeHint(int bufferFetchSizeHint)
Gives the JDBC driver a hint as to the number of rows that should be fetched from the database when more rows are needed for ResultSet.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |