java – DynamoDb仅在新属性大于现有属性时更新项
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – DynamoDb仅在新属性大于现有属性时更新项,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1585字,纯文字阅读大概需要3分钟。
内容图文
![java – DynamoDb仅在新属性大于现有属性时更新项](/upload/InfoBanner/zyjiaocheng/735/ebd3b983abc741d09038a47c884b26a1.jpg)
仅当新项目的日期比现有项目更新时,我才想更新DynamoDB中的项目.目前,我正在查询现有项目,在我的代码中进行比较,然后写入db.我想知道是否有办法让DynamoDB为我做检查.我已经研究过使用Expected,但是它的比较运算符需要接受一个参数,这会失去目的,因为这意味着无论如何都要查询现有项目.
我正在使用Java 8.
解决方法:
ConditionExpression可用于检查条件并在条件满足时更新项目.这类似于SQL语句中的WHERE条件.不同之处是: –
1)DynamoDB需要分区键和Range键来更新项目.可以在ConditionExpression中给出非键属性条件
2)DynamoDB一次只能更新一个项目.
ConditionExpression — (String) A condition that must be satisfied in
order for a conditional update to succeed.Expected — (map) This is a legacy parameter, for backward
compatibility. New applications should use ConditionExpression
instead. Do not combine legacy parameters and expression parameters in
a single API call; otherwise, DynamoDB will return a
ValidationException exception.
示例代码: –
仅当现有值“createdate”属性小于新值时(即换句话说,新值大于表中的现有值),以下代码才更新项目.
UpdateItemSpec updateItemSpec = new UpdateItemSpec().withPrimaryKey("yearkey", yearKey, "title", title)
.withReturnValues(ReturnValue.UPDATED_NEW).withUpdateExpression("set #createdate = :val1")
.withNameMap(new NameMap().with("#createdate", "createdate"))
.withValueMap(new ValueMap().withString(":val1", createDate))
.withConditionExpression("createdate < :val1");
UpdateItemOutcome outcome = null;
try {
outcome = table.updateItem(updateItemSpec);
} catch (ConditionalCheckFailedException ce) {
System.out.println("Conditional check failed." + ce.getMessage());
return false;
}
return true;
内容总结
以上是互联网集市为您收集整理的java – DynamoDb仅在新属性大于现有属性时更新项全部内容,希望文章能够帮你解决java – DynamoDb仅在新属性大于现有属性时更新项所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。