2016-04-05 32 views
1

Verilen parametrelere göre dinamik sorgu oluşturmanın bir yolu var mı?Cassandra 3 Java Sürücüsü dinamik sorguları oluştur

public List getData(String title,Date dateFrom){ 
Statement statement = QueryBuilder.select() 
       .all().from("test_database", "books"); 
    if(dateFrom!=null){ 
     //add clause to statement to find books from 'dateFrom' 
    } 

} 

cevap

2

Cassandra'da dinamik sorgular oluşturmak bir kod kokusu gibidir. Cassandra gerçekten "dinamik" sorgular için tasarlanmamıştır, ihtiyacınız olan belirli sorgu modellerine dayalı tablolar tasarlamalısınız. Dinamik sorgulamalar hızlıca dağınık olabilir çünkü Cassandra'da WHERE maddesinin kurallarına uyduğunuzdan emin olmanız gerekir, böylece İZİN FİLTRELEME kullanmak zorunda kalmazsınız.

//build your generic select 
     Select select = QueryBuilder.select().all().from("test"); 

     List<Clause> whereClauses = new ArrayList<>(); 

     /* 
     * Generate Clauses based on a value not being null. Be careful to 
     * add the clustering columns in the proper order first, then any index 
     */ 
     if(col1 != null) { 
      whereClauses.add(QueryBuilder.eq("col1Name", "col1Val")); 
     } 

     if(col2 != null) { 
      whereClauses.add(QueryBuilder.eq("col2Name", "col2Val")); 
     } 

     // Add the Clauses and execute or execute the basic select if there's no clauses 
     if(!whereClauses.isEmpty()) { 
      Select.Where selectWhere = select.where() 
      for(Clause clause : whereClauses) { 
       selectWhere.and(clause); 
      } 
      session.execute(selectWhere) 
     } else { 
      session.execute(select) 
     } 
:

Neyse işte uygulamanız için uygun olup olmadığını size bunun nasıl bir fikir vermelidir bazı hızlı kod

İlgili konular