10.7.保存、更新和删除行
ReactiveCassandraTemplate为您提供了一种简单的方法来保存、更新和删除域对象并将这些对象映射到Cassandra中管理的表。
10.7.1.插入和更新行的方法
CassandraTemplate有几种方便的方法来保存和插入您的对象。要对转换过程进行更细粒度的控制,您可以Converter使用MappingCassandraConverter(例如,ConverterRow,Person)注册Spring实例。
插入和更新操作的区别在于INSERT操作不插入null值。
使用该INSERT操作的简单案例是保存一个POJO。在这种情况下,表名由简单的类名(而不是完全限定的类名)确定。可以使用映射元数据覆盖存储对象的表。
插入或更新时,id必须设置该属性。ApacheCassandra无法生成ID。
以下示例使用保存操作并检索其内容:
示例67.使用CassandraTemplate
importstaticorg.springframework.data.cassandra.core.query.Criteria.where;importstaticorg.springframework.data.cassandra.core.query.Query.query;…Personbob=newPerson("Bob",33);cassandraTemplate.insert(bob);MonoPersonqueriedBob=reactiveCassandraTemplate.selectOneById(query(where("age").is(33)),Person.class);
您可以使用以下操作进行插入和保存:
voidinsert(ObjectobjectToSave):在ApacheCassandra表中插入对象。
WriteResult插入(ObjectobjectToSave,InsertOptionsoptions):在ApacheCassandra表中插入对象并应用InsertOptions。
您可以使用以下更新操作:
voidupdate(ObjectobjectToSave):更新ApacheCassandra表中的对象。
WriteResult更新(ObjectobjectToSave,UpdateOptionsoptions):更新ApacheCassandra表中的对象并应用UpdateOptions。
您还可以使用老式的方式编写自己的CQL语句,如下例所示:
Stringcql="INSERTINTOperson(age,name)VALUES(39,Bob)";MonoBooleanapplied=reactiveCassandraTemplate.getReactiveCqlOperations().execute(cql);
您还可以在使用InsertOptions和时配置其他选项,例如TTL、一致性级别和轻量级事务UpdateOptions。
我的行插入到哪个表中?
您可以通过两种方式管理用于对表进行操作的表名。默认表名是更改为以小写字母开头的简单类名。因此,