如何不借助表解析器/重写,根据客户名切换DynamoDB存储表
不使用表解析器/重写实现DynamoDB数据跨表保存
你可以通过继承原实体类并重新指定表注解的方式实现需求,具体步骤如下:
- 创建继承自
Customer的子类,通过@DynamoDBTable注解指定目标表customers_copy:
@DynamoDBTable(tableName = "customers_copy") public class CustomerCopy extends Customer { // 无需新增任何属性或方法,直接继承父类全部逻辑 }
- 编写保存到目标表的方法,将原
Customer实例的属性复制到子类实例后保存:
void saveToCopyTable(DynamoDbMapper mapper, Customer c) { CustomerCopy copyCustomer = new CustomerCopy(); // 手动复制属性(如果属性较多,可使用BeanUtils等工具类简化) copyCustomer.setId(c.getId()); copyCustomer.setFirstName(c.getFirstName()); copyCustomer.setLastName(c.getLastName()); mapper.save(copyCustomer); }
原理说明
DynamoDBMapper是根据实例所属类的注解来确定目标表的,子类通过重写@DynamoDBTable指定新表名后,保存子类实例就会自动写入customers_copy表,完全不需要依赖表解析器或表名重写配置。
内容的提问来源于stack exchange,提问作者user2481909
相关产品推荐
相关产品推荐

