@Target(value=METHOD) @Retention(value=RUNTIME) public @interface Select
Dao method that selects one or more rows, and maps them to instances of an
 Entity-annotated class.
 Example:
 @Dao
 public interface ProductDao {
   @Select
   Product findById(UUID productId);
 }
 
 customWhereClause() is empty, the mapper defaults to a selection by primary key
 (partition key + clustering columns). The method's parameters must match the types of the primary
 key columns, in the exact order (which is defined by the integer values of the PartitionKey and ClusteringColumn annotations in the entity class). The parameter names
 don't necessarily need to match the names of the columns. It is also possible for the method to
 only take a partial primary key (the first n columns), in which case it will return
 multiple entities.
 If customWhereClause() is not empty, it completely replaces the WHERE clause. The
 provided string can contain named placeholders. In that case, the method must have a
 corresponding parameter for each, with the same name and a compatible Java type:
 
@Select(customWhereClause = "description LIKE :searchString") PagingIterable<Product> findByDescription(String searchString);The generated SELECT query can be further customized with
limit(), perPartitionLimit(), orderBy(), groupBy() and allowFiltering(). Some
 of these clauses can also contain placeholders whose values will be provided through additional
 method parameters. Note that it is sometimes not possible to determine if a parameter is a
 primary key component or a placeholder value; therefore the rule is that if your method takes
 a partial primary key, the first parameter that is not a primary key component must be explicitly
 annotated with CqlName. For example if the primary key is ((day int, hour int,
 minute int), ts timestamp):
 
 // Annotate 'l' so that it's not mistaken for the second PK component
 @Select(limit = ":l")
 PagingIterable<Sale> findDailySales(int day, @CqlName("l") int l);
 
 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.
 
In all cases, the method can return:
null.
       If it returns more than one row, subsequent rows will be discarded.
       
 @Select
 Product findById(UUID productId);
       
   Optional of the entity class. If the query returns no rows, the method will
       return Optional.empty(). If it returns more than one row, subsequent rows will be
       discarded.
       
 @Select
 Optional<Product> findById(UUID productId);
       
   PagingIterable of the entity class. It behaves like a result set, except that
       each element is a mapped entity instead of a row.
       
 @Select(customWhereClause = "description LIKE :searchString")
 PagingIterable<Product> findByDescription(String searchString);
       
   CompletionStage or CompletableFuture of any of the above. The method will
       execute the query asynchronously. Note that for iterables, you need to switch to the
       asynchronous equivalent MappedAsyncPagingIterable.
       
 @Select
 CompletionStage<Product> findByIdAsync(UUID productId);
 @Select
 CompletionStage<Optional<Product>> findByIdAsync(UUID productId);
 @Select(customWhereClause = "description LIKE :searchString")
 CompletionStage<MappedAsyncPagingIterable<Product>> findByDescriptionAsync(String searchString);
       
   MappedReactiveResultSet of the entity class.
       
 @Select(customWhereClause = "description LIKE :searchString")
 MappedReactiveResultSet<Product> findByDescriptionReactive(String searchString);
       
   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 | allowFilteringWhether to add an ALLOW FILTERING clause to the SELECT query. | 
| String | customWhereClauseA custom WHERE clause for the SELECT query. | 
| String[] | groupByA list of column names to be added to a GROUP BY clause in the SELECT query. | 
| String | limitThe LIMIT to use in the SELECT query. | 
| String[] | orderByA list of orderings to add to an ORDER BY clause in the SELECT query. | 
| String | perPartitionLimitThe PER PARTITION LIMIT to use in the SELECT query. | 
public abstract String customWhereClause
If this is not empty, it completely replaces the WHERE clause in the generated query. Note
 that the provided string must not contain the WHERE keyword.
 
This clause can contain placeholders that will be bound with the method's parameters; see the top-level javadocs of this class for more explanations.
public abstract String limit
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.
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 perPartitionLimit
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.
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[] orderBy
Each element must be a column name followed by a space and the word "ASC" or "DESC". If there are multiple columns, pass an array:
 @Select(orderBy = {"hour DESC", "minute DESC"})
 
 If an element can't be parsed, the mapper will issue a compile-time error.
public abstract String[] groupBy
Copyright © 2017–2023. All rights reserved.