Interface SqlTemplate<I,R>
SQL templates are useful for interacting with a relational database.
SQL templates execute queries using named instead of positional parameters. Query execution is parameterized
by a map of string to objects instead of a Tuple. The default source of parameters is a
simple map, a user defined mapping can be used instead given it maps the source to such a map.
SQL template default results are Row, a user defined mapping can be used instead, mapping the
result set Row to a RowSet of the mapped type.
-
Method Summary
Modifier and TypeMethodDescription<U> SqlTemplate<I, SqlResult<U>> collecting(Collector<Row, ?, U> collector) Set a collector that will process the output and produce a custom result.Execute the query with theparametersexecuteBatch(List<I> batch) Execute a batch query with thebatch.Create an SQL template for query purpose consuming map parameters and returningRow.Create an SQL template for query purpose consuming map parameters and returning void.<T> SqlTemplate<T, R> mapFrom(TupleMapper<T> mapper) Set a parameters user defined mapping function.default <T> SqlTemplate<T, R> Set a parameters user defined class mapping.<U> SqlTemplate<I, RowSet<U>> Set a row user defined mapping function.<U> SqlTemplate<I, RowSet<U>> Set a row user defined mapping function.sql()withClient(SqlClient client) Returns a new template, using the specifiedclient.
-
Method Details
-
forQuery
-
forUpdate
-
sql
String sql()- Returns:
- the computed SQL for this template
-
mapFrom
Set a parameters user defined mapping function.At query execution, the
mapperis called to map the parameters object to aTuplethat configures the prepared query.- Parameters:
mapper- the mapping function- Returns:
- a new template
-
mapFrom
Set a parameters user defined class mapping.At query execution, the parameters object is is mapped to a
Map<String, Object>that configures the prepared query.This feature relies on
JsonObject.mapFrom(Object)feature. This likely requires to use Jackson databind in the project.- Parameters:
type- the mapping type- Returns:
- a new template
-
mapTo
Set a row user defined mapping function.When the query execution completes, the
mapperfunction is called to map the resulting rows to objects.- Parameters:
mapper- the mapping function- Returns:
- a new template
-
mapTo
Set a row user defined mapping function.When the query execution completes, resulting rows are mapped to
typeinstances.This feature relies on
JsonObject.mapFrom(Object)feature. This likely requires to use Jackson databind in the project.- Parameters:
type- the mapping type- Returns:
- a new template
-
collecting
Set a collector that will process the output and produce a custom result.- Parameters:
collector- the collector- Returns:
- a new template
-
withClient
Returns a new template, using the specifiedclient.This method does not compute the template query again, so it can be useful to execute a template on a specific
SqlConnection. For example, after starting a transaction:// Typically stored as a verticle field // So that heavy computation of the template happens once SqlTemplateinvalid input: '<'Mapinvalid input: '<'String, Object>, RowSet
> template = SqlTemplate .forQuery(pool, "SELECT id, randomnumber FROM tmp_world") .mapTo(World.class); // Executing the template inside a transaction Futureinvalid input: '<'RowSet > future = pool.withTransaction(conn -> template.withClient(conn).execute(Map.of())); - Parameters:
client- the client that will execute requests- Returns:
- a new template
-
execute
-
executeBatch
-