See: Description
| Class | Description | 
|---|---|
| AddAction | Represents an ADD action in the ADD section of an update expression. | 
| AndCondition | Represents an AND condition in a condition expression. | 
| B | A path operand that refers to a binary attribute in DynamoDB; used for building expressions. | 
| BetweenCondition | Represents a BETWEEN
 condition in a condition expression. | 
| BOOL | A path operand that refers to a boolean attribute in DynamoDB; used for building expressions. | 
| BS | A path operand that refers to a binary set attribute in DynamoDB; used for building expressions. | 
| ComparatorCondition | Represents a Comparator condition in building condition expression. | 
| Condition | Represents a condition for building condition expression. | 
| DeleteAction | Represents a DELETE action in the DELETE section of an update expression. | 
| DeleteItemExpressionSpec | Expression specification for making DeleteItem request to Amazon
 DynamoDB. | 
| ExpressionSpecBuilder | A request-centric Expression Specification Builder that can be used to
 construct valid expressions, and the respective name maps and value maps, for
 various DynamoDB requests in a typeful manner. | 
| FunctionCondition | Represents a Function condition in building condition expression. | 
| FunctionOperand | Represents a function call in building expression. | 
| GetItemExpressionSpec | Expression specification for making GetItem request to Amazon DynamoDB. | 
| IfNotExistsFunction<T> | Represents an if_not_exists(path, operand) function in building expressions. | 
| InCondition | Represents a IN condition in building condition expression. | 
| L | A path operand that refers to a list attribute in DynamoDB; used for building expressions. | 
| ListAppendFunction | Represents the list_append(operand, operand) function in building expression. | 
| M | A path operand that refers to a map attribute in DynamoDB; used for building expressions. | 
| MinusOperation | Represents a minus binary operation in building expressions that involve
 number attributes. | 
| N | A path operand that refers to a number attribute in DynamoDB; used for building expressions. | 
| NegationCondition | Represents a negation
 condition in building condition expressions. | 
| NS | A path operand that refers to a number set attribute in DynamoDB; used for building expressions. | 
| NULL | A path operand that refers to a NULL attribute in DynamoDB; used for building expressions. | 
| Operand | Represents an operand for building expressions. | 
| OrCondition | Represents an OR condition in building condition expressions. | 
| ParenthesizedCondition | An explicitly parenthesized condition, ie '(' condition ')', used in building
 condition expressions. | 
| PathOperand | A path operand used in building DynamooDB expressions such as update
 expressions and condition (aka filter) expressions. | 
| PlusOperation | Represents a plus binary operation in building expressions that involve
 number attributes. | 
| PutItemExpressionSpec | Expression specification for making PutItem request to Amazon DynamoDB. | 
| QueryExpressionSpec | Expression specification for making query request to Amazon DynamoDB. | 
| RemoveAction | Represents a REMOVE action in the REMOVE section of an update expression. | 
| S | A path operand that refers to a string attribute in DynamoDB; used for building expressions. | 
| ScanExpressionSpec | Expression specification for making scan request to Amazon DynamoDB. | 
| SetAction | Represents a SET action in the SET section of an update expression. | 
| SS | A path operand that refers to a string set attribute in DynamoDB; used for building expressions. | 
| UpdateAction | Represents an update action for building update expression. | 
| UpdateItemExpressionSpec | Expression specification for making UpdateItem request to Amazon DynamoDB. | 
 ExpressionSpecBuilder
 is the API entry point to this library.
 
 import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*;
 ...
 Table table = dynamo.getTable(TABLE_NAME);
 
 UpdateItemExpressionSpec xspec = new ExpressionSpecBuilder()
      // SET num1 = num1 + 20
      .addUpdate(
          N("num1").set(N("num1").plus(20)))
      // SET string-attr = "string-value"
      .addUpdate(
          S("string-attr").set("string-value")
      )
      // num2 BETWEEN 0 AND 100
      .withCondition(
          N("num2").between(0, 100)
      ).buildForUpdate();
 
 table.updateItem(HASH_KEY_NAME, "hashKeyValue", RANGE_KEY_NAME, 0, xspec);
 
 
 Let's say you want to include a complex condition expression such as:
(attribute_not_exists(item_version) AND attribute_not_exists(config_id) AND attribute_not_exists(config_version)) OR (item_version < 123) OR (item_version = 123 AND config_id < 456) OR (item_version = 123 AND config_id = 456 AND config_version < 999)Here is how:
 import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*;
 ...
 Table table = dynamo.getTable(TABLE_NAME);
 
 UpdateItemExpressionSpec xspec = new ExpressionSpecBuilder()
      // SET num1 = num1 + 20
      .addUpdate(
          N("num1").set(N("num1").plus(20)))
      // SET string-attr = "string-value"
      .addUpdate(
          S("string-attr").set("string-value")
      )
      // a complex condition expression (as shown above)
      .withCondition(
          // add explicit parenthesis
          parenthesize( attribute_not_exists("item_version")
              .and( attribute_not_exists("config_id") )
              .and( attribute_not_exists("config_version") )
          ).or( N("item_version").lt(123) )
           .or( N("item_version").eq(123)
              .and( N("config_id").lt(456) ) )
           .or( N("item_version").eq(123)
              .and( N("config_id").eq(456) )
              .and( N("config_version").lt(999) ))
      ).buildForUpdate();
 
 table.updateItem(HASH_KEY_NAME, "hashKeyValue", RANGE_KEY_NAME, 0, xspec);
 
 
 Without ExpressionSpecBuilder, the code (using the DynamoDB Document API) could be something like:
 ItemCollection<?> col = table.scan(
         "(#hk = :hashkeyAttrValue) AND (#rk BETWEEN :lo AND :hi)",
         new NameMap().with("#hk", HASH_KEY_NAME).with("#rk", RANGE_KEY_NAME),
         new ValueMap().withString(":hashkeyAttrValue", "allDataTypes")
                 .withInt(":lo", 1).withInt(":hi", 10));
 
 In contrast, using ExpressionSpecBuilder:
 import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*;
 ...
 ScanExpressionSpec xspec = new ExpressionSpecBuilder()
     .withCondition(
         S(HASH_KEY_NAME).eq("allDataTypes")
             .and(N(RANGE_KEY_NAME).between(1, 10))
 ).buildForScan();
 
 ItemCollection> col = table.scan(xspec);
 
 
 
 import static com.amazonaws.services.dynamodbv2.xspec.ExpressionSpecBuilder.*;
 ...
 Table table = dynamo.getTable(TABLE_NAME);
 
 UpdateItemExpressionSpec xspec = new ExpressionSpecBuilder()
     .addUpdate(S("mapAttr.colors[0]").set("red"))
     .addUpdate(S("mapAttr.colors[1]").set("blue"))
     .addUpdate(L("mapAttr.members").set(
         L("mapAttr.members").listAppend("marry", "liza")))
     .addUpdate(SS("mapAttr.countries").append("cn", "uk"))
     .addUpdate(SS("mapAttr.brands").delete("Facebook", "LinkedIn"))
     .addUpdate(attribute("mapAttr.foo").remove())
     .buildForUpdate();
 assertEquals("SET #0.#1[0] = :0, #0.#1[1] = :1, #0.#2 = list_append(#0.#2, :2) ADD #0.#3 :3 DELETE #0.#4 :4 REMOVE #0.#5",
     xspec.getUpdateExpression());
     
 final String hashkey = "addRemoveDeleteColors";
 table.updateItem(HASH_KEY_NAME, hashkey, RANGE_KEY_NAME, 0, xspec);
 
 
 Copyright © 2013 Amazon Web Services, Inc. All Rights Reserved.