java操作dynamodb查询
`package com.example.demo.controller;
import java.util.Map;
import java.util.List;
import java.util.stream.Collectors;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
import software.amazon.awssdk.services.dynamodb.model.DynamoDbException;
import software.amazon.awssdk.services.dynamodb.model.QueryRequest;
import software.amazon.awssdk.services.dynamodb.model.QueryResponse;
@RestController
public class TestController {
@GetMapping("/api/queryStock")
public Map<String, Object> queryStock(@RequestParam("stock_id") String stock_id) {
String tableName = "testnew";
String partitionKeyName = "stock_id";
DynamoDbClient ddb = DynamoDbClient.builder()
.region(Region.US_EAST_1)
.build();
try {
QueryRequest queryRequest = QueryRequest.builder()
.tableName(tableName)
.keyConditionExpression(partitionKeyName + " = :v_stock")
.expressionAttributeValues(
Map.of(":v_stock", AttributeValue.builder().s(stock_id).build()))
.build();
QueryResponse response = ddb.query(queryRequest);
List<Map<String, Object>> items = response.items().stream()
.map(item -> item.entrySet().stream().collect(Collectors.toMap(
Map.Entry::getKey,
e -> {
AttributeValue val = e.getValue();
if (val.s() != null)
return (Object) val.s(); // 强制转成 Object
if (val.n() != null)
return (Object) val.n(); // 强制转成 Object
return null;
})))
.collect(Collectors.toList());
return Map.of(
"stock_id", stock_id, // 返回查询的 stock_id
"items", items // 返回查询结果
);
} catch (DynamoDbException e) {
e.printStackTrace();
// 返回错误信息给前端,保证方法有返回值
return Map.of("error", e.getMessage());
}
}
}
`

浙公网安备 33010602011771号