范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Spring认证中国教育管理中心ApacheCassandra的Spring数据教程四

  9.8.1.实例化 CassandraTemplate
  CassandraTemplate应该始终配置为 Spring bean,尽管我们之前展示了一个示例,您可以在其中直接实例化它。但是,因为我们假设了创建 Spring 模块的上下文,所以我们假设存在 Spring 容器。
  有两种方法可以获取 a CassandraTemplate,具体取决于您加载 Spring 的方式ApplicationContext: 自动装配 Bean 查找  ApplicationContext 自动装配
  您可以将 a 自动装配CassandraOperations到您的项目中,如以下示例所示: @Autowired private CassandraOperations cassandraOperations;
  同所有的Spring自动装配,这是假定只有一种类型的豆CassandraOperations中ApplicationContext。如果您有多个CassandraTemplatebean(如果您在同一个项目中使用多个键空间就是这种情况),那么您可以使用@Qualifier注释来指定要自动装配的 bean。@Autowired @Qualifier("keyspaceOneTemplateBeanId") private CassandraOperations cassandraOperations;Bean 查找ApplicationContext
  您还可以CassandraTemplate从 中查找bean ApplicationContext,如以下示例所示:CassandraOperations cassandraOperations = applicationContext.getBean("cassandraTemplate", CassandraOperations.class);9.9.保存、更新和删除行
  CassandraTemplate 为您提供了一种简单的方法来保存、更新和删除域对象并将这些对象映射到 Cassandra 中管理的表。 9.9.1.类型映射
  Spring Data for Apache Cassandra 依赖于 DataStax Java 驱动程序CodecRegistry来确保类型支持。随着类型的添加或更改,Apache Cassandra 模块的 Spring Data 继续运行而无需更改。有关当前类型映射矩阵,请参阅CQL 数据类型 和"数据映射和类型转换"。 9.9.2.插入和更新行的方法
  CassandraTemplate有几种方便的方法来保存和插入您的对象。要对转换过程进行更细粒度的控制,您可以Converter使用MappingCassandraConverter (例如,Converter)注册 Spring实例。
  插入和更新操作的区别在于INSERT操作不插入null值。
  使用该INSERT操作的简单案例是保存一个 POJO。在这种情况下,表名由简单的类名(而不是完全限定的类名)确定。可以使用映射元数据覆盖存储对象的表。
  插入或更新时,id必须设置该属性。Apache Cassandra 无法生成 ID。
  以下示例使用保存操作并检索其内容:
  示例 64. 使用 CassandraTemplate import static org.springframework.data.cassandra.core.query.Criteria.where; import static org.springframework.data.cassandra.core.query.Query.query; …  Person bob = new Person("Bob", 33); cassandraTemplate.insert(bob);  Person queriedBob = cassandraTemplate.selectOneById(query(where("age").is(33)), Person.class);
  您可以使用以下操作进行插入和保存:void insert (Object objectToSave):在 Apache Cassandra 表中插入对象。WriteResult 插入 (Object objectToSave, InsertOptions options):在 Apache Cassandra 表中插入对象并应用InsertOptions。
  您可以使用以下更新操作:void update (Object objectToSave):更新 Apache Cassandra 表中的对象。WriteResult 更新 (Object objectToSave, UpdateOptions options):更新 Apache Cassandra 表中的对象并应用UpdateOptions。
  您还可以使用老式的方式编写自己的 CQL 语句,如下例所示:String cql = "INSERT INTO person (age, name) VALUES (39, "Bob")";  cassandraTemplate().getCqlOperations().execute(cql);
  您还可以在使用InsertOptions和时配置其他选项,例如 TTL、一致性级别和轻量级事务UpdateOptions。我的行插入到哪个表中?
  您可以通过两种方式管理用于对表进行操作的表名。默认表名是更改为以小写字母开头的简单类名。因此,com.example.Person类的一个实例将存储在person表中。第二种方式是在@Table注解中指定表名。批量插入、更新和删除单个对象
  Cassandra 协议支持使用批处理在一个操作中插入一组行。
  CassandraTemplate接口中的以下方法支持此功能:batchOps:创建一个新CassandraBatchOperations的填充批次。
  CassandraBatchOperationsinsert: 接受单个对象、数组 (var-args) 或Iterable要插入的对象。update: 接受单个对象、数组 (var-args) 或Iterable要更新的对象。delete: 接受单个对象、数组 (var-args) 或Iterable要删除的对象。withTimestamp:对批次应用 TTL。execute: 执行批处理。9.9.3.更新表中的行
  对于更新,您可以选择更新多行。
  以下示例显示了通过向具有+分配的余额添加一次性 50.00 美元奖金来更新单个帐户对象:
  示例 65. 使用更新行 CasandraTemplate import static org.springframework.data.cassandra.core.query.Criteria.where; import org.springframework.data.cassandra.core.query.Query; import org.springframework.data.cassandra.core.query.Update;  …  boolean applied = cassandraTemplate.update(Query.query(where("id").is("foo")),   Update.create().increment("balance", 50.00), Account.class);
  除了Query前面讨论的之外,我们还通过使用Update对象来提供更新定义。该Update班有匹配可用的Apache Cassandra的更新任务,从而方法。
  大多数方法返回Update对象以提供用于代码样式目的的流畅 API。对行执行更新的方法
  update方法可以更新行,如下:boolean update (Query query, Update update, Class<?> entityClass):更新 Apache Cassandra 表中的对象选择。Update 类的方法
  本Update类可以用一点点"语法糖"被使用,因为它的方法是为了链接在一起。此外,您可以使用静态Update方法public static Update update(String key, Object value)和使用静态导入来启动新实例的创建。
  该Update班有以下方法:AddToBuilder 添加到 (String columnName) AddToBuilder入口点:更新prepend(Object value):使用+更新分配将集合值预先添加到现有集合。更新prependAll(Object… values):使用+更新分配将所有集合值添加到现有集合中。更新append(Object value):使用+更新分配将集合值附加到现有集合。更新append(Object… values):使用+更新分配将所有集合值附加到现有集合。更新entry(Object key, Object value):使用+更新分配添加地图条目。更新addAll(Map<? extends Object, ? extends Object> map):使用+更新分配将所有地图条目添加到地图。Update remove (String columnName, Object value):使用-更新分配从集合中删除值。Update clear (String columnName) : 清除集合。Update increment (String columnName, Number delta):使用+更新分配进行更新。Update decrement (String columnName, Number delta):使用-更新分配进行更新。Update set (String columnName, Object value):使用=更新分配进行更新。SetBuilder 设置 (String columnName) SetBuilder入口点:更新atIndex(int index).to(Object value):使用=更新分配将给定索引处的集合设置为一个值。更新atKey(String object).to(Object value):将给定键处的映射条目设置为=更新分配的值。
  以下清单显示了一些更新示例:// UPDATE … SET key = "Spring Data"; Update.update("key", "Spring Data")  // UPDATE … SET key[5] = "Spring Data"; Update.empty().set("key").atIndex(5).to("Spring Data");  // UPDATE … SET key = key + ["Spring", "DATA"]; Update.empty().addTo("key").appendAll("Spring", "Data");
  请注意,Update一旦创建,它就是不可变的。调用方法会创建新的不可变(中间)Update对象。9.9.4.删除行的方法
  您可以使用以下重载方法从数据库中删除对象: boolean  删除  (Query query, Class<?> entityClass):删除由 选择的对象Query。 T  delete  (T entity) : 删除给定的对象。 T  delete  (T entity, QueryOptions queryOptions):删除给定的对象应用QueryOptions。 boolean  deleteById  (Object id, Class<?> entityClass):使用给定的 Id 删除对象。 9.9.5.乐观锁定
  该@Version注释在 Cassandra 的上下文中提供类似于 JPA 的语法,并确保更新仅应用于具有匹配版本的行。乐观锁利用 Cassandra 的轻量级事务来有条件地插入、更新和删除行。因此,INSERT语句是在IF NOT EXISTS条件下执行的。对于更新和删除,版本属性的实际值被添加到UPDATE条件中,这样如果在此期间另一个操作更改了行,则修改不会产生任何影响。在这种情况下,OptimisticLockingFailureException会抛出an 。以下示例显示了这些功能: @Table class Person {    @Id String id;   String firstname;   String lastname;   @Version Long version; }  Person daenerys = template.insert(new Person("Daenerys"));                              Person tmp = template.findOne(query(where("id").is(daenerys.getId())), Person.class);   daenerys.setLastname("Targaryen"); template.save(daenerys);                                                                template.save(tmp); // throws OptimisticLockingFailureException
  最初插入文档。version设置为0。
  加载刚刚插入的文档。version还在0。
  用 更新文档version = 0。将lastname和设置version为1。
  尝试更新先前加载的文档,但仍有version = 0. 操作失败并显示OptimisticLockingFailureException,因为当前version是1。
  乐观锁定仅支持单实体操作,不支持批处理操作。9.10.查询行
  你可以表达使用您的查询Query和Criteria类别,其中有反映本地卡桑德拉谓词运营商名称,如方法名lt,lte,is,等。
  在Query和Criteria类遵循流畅API风格,让您可以轻松地串联多个方法标准和查询在一起,同时具有易于理解的代码。在 Java 中创建Query 和Criteria实例时使用静态导入以提高可读性。 9.10.1.查询表中的行
  在前面的部分中,我们看到了如何使用selectOneByIdon 方法检索单个对象CassandraTemplate。这样做会返回单个域对象。我们还可以查询要作为域对象列表返回的行集合。假设我们有许多Person名称和年龄值作为行存储在表中的对象,并且每个人都有一个帐户余额,我们现在可以使用以下代码运行查询:
  示例 66. 查询行使用 CassandraTemplate import static org.springframework.data.cassandra.core.query.Criteria.where; import static org.springframework.data.cassandra.core.query.Query.query;  …  List result = cassandraTemplate.select(query(where("age").is(50))   .and(where("balance").gt(1000.00d)).withAllowFiltering(), Person.class);
  的select,selectOne和stream方法采取一个Query对象作为参数。此对象定义用于执行查询的条件和选项。该标准是通过使用一个Criteria对象来指定的,该对象具有一个名为where实例化新Criteria对象的静态工厂方法。我们建议对org.springframework.data.cassandra.core.query.Criteria.whereand使用静态导入Query.query,以使查询更具可读性。
  此查询应返回Person满足指定条件的对象列表。的Criteria类有下列方法,对应于运营商的Apache卡桑德拉提供:Criteria 类的方法CriteriaDefinition gt (Object value):使用>运算符创建条件。CriteriaDefinition gte (Object value):使用>=运算符创建条件。CriteriaDefinition in (Object… values):通过IN对 varargs 参数使用运算符来创建条件。CriteriaDefinition in (Collection<?> collection):通过使用IN集合的运算符创建条件。CriteriaDefinition is (Object value):通过使用字段匹配 ( column = value)创建条件。CriteriaDefinition lt (Object value):使用<运算符创建条件。CriteriaDefinition lte (Object value):使用 运算符创建条件。CriteriaDefinition like (Object value):使用LIKE运算符创建条件。CriteriaDefinition contains (Object value):使用CONTAINS运算符创建条件。CriteriaDefinition containsKey (Object key):使用CONTAINS KEY运算符创建条件。
  Criteria 一经创建即不可变。Query 类的方法
  本Query类有一些额外的方法,你可以用它来提供的查询选项:Query by (CriteriaDefinition…  criteria):用于创建Query对象。Query 和 (CriteriaDefinition criteria):用于向查询添加附加条件。Query columns (Columns columns):用于定义要包含在查询结果中的列。Query limit (long limit):用于将返回结果的大小限制为提供的限制(用于分页)。Query pageRequest (Pageable pageRequest):用于关联Sort,PagingState以及fetchSize与查询(用于寻呼)。Query pagingState (ByteBuffer pagingState):用于将 aByteBuffer与查询关联(用于分页)。Query queryOptions (QueryOptions queryOptions):用于QueryOptions与查询关联。Query sort (Sort sort):用于为结果提供排序定义。Query withAllowFiltering ():用于呈现ALLOW FILTERING查询。
  Query一经创建即不可变。调用方法会创建新的不可变(中间)Query对象。9.10.2.查询行的方法
  本Query类有以下方法,返回行: List  select  (Query query, Class entityClass):T从表中查询类型的对象列表。 T  selectOne  (Query query, Class entityClass):T从表中查询单个类型的对象。 Slice  slice  (Query query, Class entityClass):通过从表中查询 a Sliceof 类型的对象来开始或继续分页T。 Stream  stream  (Query query, Class entityClass):T从表中查询类型对象的流。 List  select  (String cql, Class entityClass):T通过提供 CQL 语句对表中类型对象列表的临时查询。 T  selectOne  (String cql, Class entityClass):T通过提供 CQL 语句对表中的单个类型对象进行临时查询。 Stream  stream  (String cql, Class entityClass):T通过提供 CQL 语句对表中类型的对象流进行临时查询。
  查询方法必须指定T返回的目标类型。 9.10.3.流畅的模板API
  CassandraOperations当涉及到与 Apache Cassandra 的更底层交互时,该接口是核心组件之一。它提供了广泛的方法。您可以为每个方法找到多个重载。它们中的大多数涵盖了 API 的可选(可为空)部分。
  FluentCassandraOperations为CassandraOperations 提供更易读、更流畅的 API 的常用方法提供更窄的接口。入口点(query(…)、insert(…)、update(…)和delete(…))遵循基于要执行的操作的自然命名方案。从入口点开始,该 API 旨在仅提供依赖于上下文的方法,引导开发人员使用调用实际CassandraOperation. 以下示例显示了流畅的 API: List all = ops.query(SWCharacter.class)   .inTable("star_wars")                           .all();
  如果使用类名SWCharacter定义表名@Table或使用类名作为表名没有问题,请跳过此步骤。
  如果 Cassandra 中的一个表包含不同类型的实体,例如Jedi在一个 Table of 中的实体SWCharacters,则可以使用不同的类型来映射查询结果。您可以使用as(Class<?> targetType)将结果映射到不同的目标类型,同时query(Class<?> entityType)仍然适用于查询和表名。以下示例使用query和as方法: List all = ops.query(SWCharacter.class)       .as(Jedi.class)                                   .matching(query(where("jedi").is(true)))   .all();
  查询字段根据SWCharacter类型进行映射。
  结果行被映射到Jedi.
  您可以直接应用于预测由仅提供以产生的文件interface通过类型as(Class<?>)。
  终止方法 ( first(), one(), all(), 和stream()) 处理检索单个实体和检索多个实体之间的切换List或Stream类似操作。
  新流利的模板API方法(即query(..),insert(..),update(..)和delete(..))使用有效线程安全的支持对象组成的CQL语句。然而,它带来了额外的年轻代 JVM 堆开销的额外成本,因为设计基于各种 CQL 语句组件的最终字段和变异构造。在可能插入或删除大量对象时(例如在循环内部),您应该小心。
  内容来源:Spring中国教育管理中心(Spring认证)
  2021年2月,VMware公司正式与北京中科卓望网络科技有限公司(以下简称:中科卓望)达成战略合作,授予其 Spring 中国教育管理中心,携手 VMware 全球最新 Spring技术和认证体系,帮助中国院校构建专业教学内容,全面赋能未来开发人
  #spring认证##java##码农#

2022下半年,关于消费的5个小趋势2022已经过去了一大半,不少企业或商家也在时间的流逝中,感知到了消费环境的变化。那么面对当下,品牌要如何抓住用户消费心理又要如何理解并抓准消费变化趋势中的潜在机会点呢?2022进A股8月即将结束!金九银十散户如何布局?回顾整个8月份,A股又经历了单边的上涨行情,从3200点涨到了3300点100点的涨幅让很多散户投资者赚的盆满钵满。尤其是在此次行情当中,跟随社长抓住了科技半导体板块与光伏板块投资有什么好方法将聊天内容隐藏加密?几乎每个人都会通过手机与人聊天沟通,因此手机中储存着非常多的隐私信息。有的时候手机被人拿到或者被翻看的时候,很有可能将一些需要保密的话题暴露,特别是手机丢失,里面的聊天内容很有可能继dopa之后,miss大小姐也宣布停播,曾经的电竞一姐正式退出早些年玩英雄联盟,看直播的小伙伴一定对dopa和miss大小姐这两人很熟悉,当年dopa是国服路人王,小鱼人因为上线A了一下小兵,dopa直接宣布对线结束,这应该是是很多人的记忆点粉丝用虚幻5引擎自制开放世界钢铁侠游戏预告油管主TeaserPlay近日用虚幻5自制了开放世界钢铁侠游戏预告,一起来看下。钢铁侠如今已成为漫威最知名的角色之一,但却从未有一款3A级钢铁侠单机游戏出现。不过确实有过尝试,例如原神目前所有活动武器盘点,衔珠海皇真的是整活之王原神到现在有不少活动赠送的武器了,很多萌新不知道这些武器哪里来的,有的不错有的没用,暂时来讲没有再次获取的手段,看看你有没有错过哪个心仪的活动武器吧。腐殖之剑腐殖剑是原神最早的一把龙幻美食路怎么玩?龙幻无论是画质还是特效都很惊艳,但今天我要给大家介绍的是一代米其林七星厨神是如何制作出来的。相信大家都喜欢这个游戏。让我们一起来看看吧。有兴趣的不要错过。龙幻美食路怎么玩?烹饪之道这些红白机游戏是你童年的噩梦吗?这些红白机游戏是你童年的噩梦吗?即使是红白机游戏,在功能几乎相同的情况下,发布的游戏质量也完全不同。相信在座的各位朋友都深有感触!80年代初的游戏体验和80年代中后期完全不一样。早坦克世界国服820周年庆典持续狂欢,创意纪录片震撼上线多重活动轮番登场,多种渠道狂撒积分!这个8月坦克世界可以说是相当热闹了,不仅有国服820周年庆典盛大开幕,还有前线模式2022第二次发布火热来袭,让玩家流连忘返。积分来相送,国服8我国将建月球基地!载人登月何时展开?新火箭和新飞船在研发好消息,我国正在论证载人登月方案,最早有望在2030年让航天员踏上月球!载人登月到底有多难?我国还有哪些技术需要突破?众所周知,1969年的时候,美国的阿波罗11号首次将人类送上月推荐几个比较冷门的塔防游戏这是一个比较冷门的游戏类别。推荐几个我玩过感觉不错的。1。王国冲(王国保卫战)说是塔防的巅峰不为过,从小到大偶尔玩的知名王国保卫战。到现在有4代1代,前线,起源,复仇。一个小游戏四
大数据工程师让数据活起来来源经济日报将大量多样的数据信息汇聚打通管理使用用26个英文字母和一些标点符号写出一行行代码,变成大众应用的各类应用软件和系统这便是中电万维信息技术有限责任公司生态环境平台部大数据生成式人工智能新规征求意见经济日报北京4月11日讯(记者李芃达)为促进生成式人工智能技术健康发展和规范应用,国家互联网信息办公室11日就生成式人工智能服务管理办法(征求意见稿)向社会公开征求意见。其中提出,周杰伦为何选中她,她长相甜美,却要做短发御姐,超模三吉彩花三吉彩花是一位日本的演员和模特,出生于1996年12月18日,童星出道,曾经在多部电视剧和电影中担任主演或配角。她的身高171厘米,长相甜美,充满少女气息,被誉为日本第一美少女。三红宝石鉴定机构广州中心珍贵宝石如何鉴定特别鸣谢GUILD(吉尔徳)宝石实验室红宝石是一种非常珍贵的宝石,其颜色鲜艳光泽度高硬度大等特点,使其备受珠宝爱好者的追捧。然而,随着市场上红宝石的数量不断增加,假冒伪劣产品也越来GrandSeiko推出新款SBGW293腕表,采用巧克力色表盘GrandSeiko宣布推出SBGW289LE时,我一直热切期待这款手表,这款手表采用基于其卓越的44GS设计的全新36。5毫米表壳。我不知道293会来,但我正确地假设GrandS帝舵表以全新PelagosFXD重新演绎TheMarineNationale帝舵表透露了他们最近宣布与法国海军合作的成果,备受期待,Marinenationale以及由此产生的Pelagos将不足为奇。这不是这两个实体第一次联手为明尼苏达州的男女服役人员创了解儿童意外伤害这些事,关键时刻能救命!孩子精力旺盛好奇心强但也缺乏一定的安全意识儿童常见的意外伤害有哪些?如何避免这些危险?出现意外伤害如何处理?重庆发布医学科普类栏目听医生的话联合重庆医科大学附属儿童医院为各位家长解孩子总喊腿疼怎么办?有可能是这些问题小儿推拿马新医生孩子总喊腿疼怎么办?有可能是这些问题。总有家长咨询说,孩子时不时的就说腿疼,白天什么都不影响,一到了晚上就哭闹说腿疼,脚疼还说不出具体哪里疼。最常见的原因就是生长痛。生长痛的孩子应宁可装哑巴,也别对孙子外孙说这4种话,望谨记头条创作挑战赛在成为祖辈之后,我们需要充分认识到自己的责任,因为我们的言行举止将直接影响到我们的后代。本文主要围绕一篇文章宁可装哑巴,也别对孙子外孙说这4种话,望谨记展开讨论,探讨生化妊娠为什么会生化?正常情况下就是说你卵子排出来以后,排出来就是卵子这里卵巢上面出来出来。通过输卵管进去,菁子从阴道里面进来,进来到输卵管里面受菁。你生化是在输卵管,肯定是受菁了,两个肯我们似乎都丧失了对孩子的教育能力家长们都希望培养出快乐和自律的孩子。而事实上,孩子们却常常感到不满无聊低落,并表现出傲慢或者以自我为中心。儿科医生和精神科医生的研究表明,精神严重失常孩子的数量正以惊人的速度在增长