带IN子句的PreparedStatement

时间:2018-07-20 08:35:15

标签: java prepared-statement cassandra-3.0 datastax-java-driver in-clause

还有其他方法可以使用PreparedStatement(datastax)通过IN子句绑定数据类型吗?

查询如下:

SELECT * FROM table WHERE day IN(?)

日期是日期类型。将有N个元素(由用户决定)。

由于异常

,因此无法绑定天数列表
Codec not found for requested operation: [date <-> java.util.ArrayList] 

根据发布https://stackoverflow.com/a/189399/9461706的信息,我现在看到的唯一可能的方法是第一个-为每个值执行,但我不想这样做。可能会将响应时间延长到不可接受的值。

这是我执行查询的方式:

ResultSet rS = dataSource.executePreperedStatement(query, day);
private ConcurrentHashMap<String, PreparedStatement> queryToPrepStmt;
public ResultSet executePreperedStatement(String query, Object... values){
        PreparedStatement pS = null;
        if(queryToPrepStmt.containsKey(query)){
            pS = queryToPrepStmt.get(query);
        } else{
            pS = session.prepare(query);
            queryToPrepStmt.put(query, pS);
        }
        if(pS!=null){
                BoundStatement boundStatement = pS.bind(values);
                return session.execute(boundStatement);
        }
        return null;
    }

0 个答案:

没有答案