我实现了以下两个测试用例来测试 DynamoDB 增强库。
测试用例 1:使用表“digital_form”上的 Get Item,PK =“FORM#ABC123”和 SK =“INFO#ABC123”。可以返回结果
@Test
public void testGetItemWithPKSK() throws ExecutionException, InterruptedException {
DynamoDbAsyncTable<DigitalFormDao> digitalformTable = dynamoDbEnhancedAsyncClient
.table("digital_form", TableSchema.fromBean(DigitalFormDao.class));
DigitalFormDao form = digitalformTable.getItem(
Key.builder().partitionValue("FORM#ABC123").sortValue("INFO#ABC123").build()).get();
System.out.println(form.getSk());
}
测试用例 2:在同一张表上使用 Query,PK=“FORM#ABC123”,SK 以“INFO”开头。假设它将返回一组结果,包括测试用例 1。但是,没有返回任何结果。
@Test
public void testQueryWithPKandSKBegin(){
DynamoDbAsyncTable<DigitalFormDao> digitalformTable = dynamoDbEnhancedAsyncClient
.table("digital_form", TableSchema.fromBean(DigitalFormDao.class));
PagePublisher<DigitalFormDao> digitalForms = digitalformTable.query(
r -> r.queryConditional(
sortBeginsWith(k -> k.partitionValue("FORM#ABC123").sortValue("INFO"))));
AtomicInteger atomicInteger = new AtomicInteger();
atomicInteger.set(0);
digitalForms.subscribe(page -> {
DigitalFormDao digitalFormDao = (DigitalFormDao) page.items().get(atomicInteger.get());
System.out.println(digitalFormDao.getSk());
atomicInteger.incrementAndGet();
});
}
我的查询语句有问题吗?