如何解决CassandraBatchOperations添加字符串查询
我写了以下代码:
@Service
public class CassandraBatchOperationService {
@Autowired CassandraTemplate cassandraTemplate;
public void batchOps(List<Object>entities){
CassandraBatchOperations batchCql = cassandraTemplate.batchOps().insert(entities);
batchCql.execute();
}}
我知道它是如何工作的,这很好。但是我想知道是否有可能向 CassandraBatchOperations 对象添加查询字符串("INSERT INTO table1(value1,value2) VALUES ('test','test');"
)?我希望以下内容类似:
@Service
public class CassandraBatchOperationService {
@Autowired CassandraTemplate cassandraTemplate;
public void batchOps(List<Object>entities,List<String> queries){
CassandraBatchOperations batchCql = cassandraTemplate.batchOps().insert(entities).insert(queries);
batchCql.execute();
}}
解决方法
批处理原始查询:
UUID uuid = UUIDs.timeBased();
String insertPreparedCql =
"insert into book (isbn,title,publisher,tags) values (?,?,?)";
List<Object> singleBookArgsList = new ArrayList<>();
List<List<?>> bookList = new ArrayList<>();
singleBookArgsList.add(uuid);
singleBookArgsList.add("Head First Java");
singleBookArgsList.add("OReilly Media");
singleBookArgsList.add(ImmutableSet.of("Software"));
bookList.add(singleBookArgsList);
cassandraTemplate.ingest(insertPreparedCql,bookList);
如果可能的话,可以使用批处理语句(忽略orm映射):
//session is your cassandra session
BatchStatement insertBatch = new BatchStatement();
PreparedStatement insertQuery = session.prepare("INSERT ......");
PreparedStatement insertQuery2 = session.prepare("INSERT ......");
.
.
insertBatch.add(insertQuery);
insertBatch.add(insertQuery2);
...
session.execute(insertBatch);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。