public interface DtoQuery<T>
These beans are just normal classes. They must have public constructors and setters.
Constructors with arguments are used if the number of constructor arguments matches the number of columns in the resultSet.
If the number of columns in the resultSet is greater than the largest constructor then the largest constructor is used for the first columns and remaining columns are mapped by setter methods.
// CustomerDto is just a 'bean like' class
// with public constructor(s) and public setter methods
String sql = "select id, name from customer where name like :name and status_code = :status";
List<CustomerDto> beans =
DB.findDto(CustomerDto.class, sql)
.setParameter("name", "Acme%")
.setParameter("status", "ACTIVE")
.findList();
Modifier and Type | Method and Description |
---|---|
void |
findEach(java.util.function.Consumer<T> consumer)
Execute the query iterating a row at a time.
|
void |
findEachWhile(java.util.function.Predicate<T> consumer)
Execute the query iterating a row at a time with the ability to stop consuming part way through.
|
List<T> |
findList()
Execute the query returning a list.
|
T |
findOne()
Execute the query returning a single bean.
|
Optional<T> |
findOneOrEmpty()
Execute the query returning an optional bean.
|
DtoQuery<T> |
setBufferFetchSizeHint(int bufferFetchSizeHint)
A hint which for JDBC translates to the Statement.fetchSize().
|
DtoQuery<T> |
setFirstRow(int firstRow)
Set the index of the first row of the results to return.
|
DtoQuery<T> |
setLabel(String label)
Set a label on the query to make it easier to identify queries related to query execution statistics.
|
DtoQuery<T> |
setMaxRows(int maxRows)
Set the maximum number of query results to return.
|
DtoQuery<T> |
setParameter(int position,
Object value)
The same as bind for positioned parameters.
|
DtoQuery<T> |
setParameter(String name,
Object value)
The same as bind for named parameters.
|
DtoQuery<T> |
setRelaxedMode()
When resultSet columns are not able to be mapped to a bean property then instead of
throwing effectively skip reading that column.
|
DtoQuery<T> |
setTimeout(int secs)
Set a timeout on this query.
|
void findEach(java.util.function.Consumer<T> consumer)
This streaming type query is useful for large query execution as only 1 row needs to be held in memory.
void findEachWhile(java.util.function.Predicate<T> consumer)
Returning false after processing a row stops the iteration through the query results.
This streaming type query is useful for large query execution as only 1 row needs to be held in memory.
@Nonnull Optional<T> findOneOrEmpty()
DtoQuery<T> setParameter(String name, Object value)
DtoQuery<T> setParameter(int position, Object value)
DtoQuery<T> setFirstRow(int firstRow)
DtoQuery<T> setMaxRows(int maxRows)
DtoQuery<T> setRelaxedMode()
DtoQuery<T> setLabel(String label)
label
- A label that is unique to the DTO bean type.DtoQuery<T> 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.DtoQuery<T> 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.
Copyright © 2019. All rights reserved.