还有其他方法可以使用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;
}