我正在使用 Phantom 库将 Scala 代码中的行插入 Cassandra。
所以基本上我创建了一个扩展 CassandraTable 的类,然后我从幻像库中获取所有创建、更新方法。
我想知道的一件事是它如何生成它的 INSERT 语句。它是否会生成条件更新语句(如 INSERT IF NOT EXISTS)的 vanilla INSERT 语句。
我正在使用 Phantom 库将 Scala 代码中的行插入 Cassandra。
所以基本上我创建了一个扩展 CassandraTable 的类,然后我从幻像库中获取所有创建、更新方法。
我想知道的一件事是它如何生成它的 INSERT 语句。它是否会生成条件更新语句(如 INSERT IF NOT EXISTS)的 vanilla INSERT 语句。
只需记录查询,响应就会很明显。默认情况下,insert
查询不包含ifNotExists
. 从 Phantom 2.5.0 开始,表会自动生成一个store
方法,因此您可以调用:
database.table.store(record).ifNotExists.future()
在幻影 2.5.0 之前:
def store(record: Record): InsertQuery.Default[Table, Record] = {
insert.value(_.column1, record.value1)
.value(_.column2, record.value2)
...
.ifNotExists()
}
附带说明一下,幻像中的所有查询都有一个.qb.queryString
访问器,因此查看内部非常简单。