如何创建数据存储java驱动程序的BoudStatement的深层副本?

时间:2017-01-27 10:33:52

标签: cassandra datastax-java-driver

有没有办法只绑定预处理语句的少数命名变量并创建一个部分绑定语句,然后再填充剩余的命名变量(例如从列表中)创建多个绑定语句?

p = session.prepare("select a from b where c=? AND d=?")
bound = p.bind("c", 1)

l.map(v => bound.bind("d", l))

在上面的最后一个语句中,我想每次都克隆'bound',这样我就可以在executeAsync中使用所有绑定语句。

1 个答案:

答案 0 :(得分:1)

只需使用预定义值创建预准备语句:

p = session.prepare("select a from b where c=1 AND d=?")
l.map(v => bound.bind("d", l))

如果您在编译时不知道值c,请动态创建语句字符串:

c=1
p = session.prepare("select a from b where c=" + c + " AND d=?")
l.map(v => bound.bind("d", l))

我一次又一次地重复绑定一个值,并没有看到大问题。它比克隆绑定语句更清晰。