在上一篇文章中,我们使用DynamoDBMapper来将DynamoDB表映射到Java对象。
插入时,我们的动作几乎相同,但是方式更方便。 为了插入项目,您要做的就是使用对象映射器持久化对象
在我们的例子中,我们将创建一个执行简单插入的User存储库。
package com.gkatzioura.dynamodb.mapper.repository;import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper;
import com.gkatzioura.dynamodb.mapper.entities.User;import java.util.ArrayList;
import java.util.Date;
import java.util.List;/*** Created by gkatzioura on 9/22/16.*/
public class UserMapperRepository {private DynamoDBMapper dynamoDBMapper;public UserMapperRepository(AmazonDynamoDB amazonDynamoDB) {dynamoDBMapper = new DynamoDBMapper(amazonDynamoDB);}public void insert(User user) {dynamoDBMapper.save(user);}}
要坚持下去,我们只需要创建一个简单的对象。
@Testpublic void testInsertUser() {User user = new User();user.setRegisterDate(new Date().getTime());user.setFullName("John Doe");user.setEmail("john@doe.com");userMapperRepository.insert(user);}
同样使用DynamoDBMapper,我们可以进行批量插入或批量删除。 因此,我们将向存储库添加两个额外的方法。
public void insert(List<User> users) {dynamoDBMapper.batchWrite(users,new ArrayList<>());}public void delete(List<User> users) {dynamoDBMapper.batchDelete(users);}
批量添加(或删除)项目,仅需要传递包含定义键值的对象列表。
@Testpublic void testBatchUserInsert() {List<User> users = new ArrayList<>();for(int i=0;i<10;i++) {String email = emailPrefix+i+"@doe.com";User user = new User();user.setRegisterDate(new Date().getTime());user.setFullName("John Doe");user.setEmail("john@doe.com");users.add(user);}userMapperRepository.insert(users);}@Testpublic void testBatchDelete() {testBatchUserInsert();List<User> users = new ArrayList<>();for(int i=0;i<10;i++) {String email = emailPrefix+i+"@doe.com";User user = new User();user.setRegisterDate(new Date().getTime());user.setFullName("John Doe");user.setEmail("john@doe.com");users.add(user);}userMapperRepository.delete(users);}
您可以在github上找到源代码
翻译自: https://www.javacodegeeks.com/2016/09/insert-dynamodb-items-dynamodbmapper.html