@Target(value=METHOD) @Retention(value=RUNTIME) public @interface Insert
Dao
method that inserts an instance of an Entity
-annotated class.
Example:
@Dao public interface ProductDao { @Insert void insert(Product product); }
If the query has a TTL and/or timestamp with placeholders, the method must have corresponding additional parameters (same name, and a compatible Java type):
@Insert(ttl = ":ttl") void insertWithTtl(Product product, int ttl);
A Function<BoundStatementBuilder, BoundStatementBuilder>
or UnaryOperator<BoundStatementBuilder>
can be added as the last
parameter. It will be applied to the statement before execution. This allows you to customize
certain aspects of the request (page size, timeout, etc) at runtime.
void
.
INSERT ... IF NOT EXISTS
queries. The method
will return null
if the insertion succeeded, or the existing entity if it failed.
@Insert(ifNotExists = true) Product insertIfNotExists(Product product);
Optional
of the entity class, as a null-safe alternative for INSERT ...
IF NOT EXISTS
queries.
@Insert(ifNotExists = true) Optional<Product> insertIfNotExists(Product product);
boolean
or Boolean
, which will be mapped to ResultSet.wasApplied()
. This is intended for IF NOT EXISTS queries:
@Insert(ifNotExists = true) boolean saveIfNotExists(Product product);
ResultSet
. This is intended for cases where you intend to inspect data associated
with the result, such as PagingIterable.getExecutionInfo()
.
@Insert ResultSet save(Product product);
BoundStatement
This is intended for cases where you intend to execute this
statement later or in a batch:
@Insert BoundStatement save(Product product);
CompletionStage
or CompletableFuture
of any of the above. The mapper will
execute the query asynchronously.
@Insert CompletionStage<Void> insert(Product product); @Insert(ifNotExists = true) CompletableFuture<Product> insertIfNotExists(Product product); @Insert(ifNotExists = true) CompletableFuture<Optional<Product>> insertIfNotExists(Product product);
ReactiveResultSet
.
@Insert ReactiveResultSet insertReactive(Product product);
DaoFactory
), then the generated
query targets that keyspace. Otherwise, it doesn't specify a keyspace, and will only work if the
mapper was built from a Session
that has a default keyspace set.
If a table was specified when creating the DAO, then the generated query targets that table. Otherwise, it uses the default table name for the entity (which is determined by the name of the entity class and the naming convention).
Modifier and Type | Optional Element and Description |
---|---|
boolean |
ifNotExists
Whether to append an IF NOT EXISTS clause at the end of the generated INSERT query.
|
NullSavingStrategy |
nullSavingStrategy
How to handle null entity properties during the insertion.
|
String |
timestamp
The timestamp to use in the generated INSERT query.
|
String |
ttl
The TTL (time to live) to use in the generated INSERT query.
|
public abstract boolean ifNotExists
public abstract String ttl
If this starts with ":", it is interpreted as a named placeholder (that must have a corresponding parameter in the method signature). Otherwise, it must be a literal integer value (representing a number of seconds).
If the placeholder name is invalid or the literal can't be parsed as an integer (according
to the rules of Integer.parseInt(String)
), the mapper will issue a compile-time
warning.
public abstract String timestamp
If this starts with ":", it is interpreted as a named placeholder (that must have a corresponding parameter in the method signature). Otherwise, it must be literal long value (representing a number of microseconds since epoch).
If the placeholder name is invalid or the literal can't be parsed as a long (according to
the rules of Long.parseLong(String)
), the mapper will issue a compile-time warning.
public abstract NullSavingStrategy nullSavingStrategy
This defaults either to the DAO-level strategy
(if set),
or NullSavingStrategy.DO_NOT_SET
.
Copyright © 2017–2021. All rights reserved.