iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 27
0
Software Development

從Java進入AWS部署RESTful API的心路歷程系列 第 27

Day27-實作(八)條件式save & update

  • 分享至 

  • xImage
  •  

有鑑於儲存更新項目的方式要求有所不同,對於原本的save method進像相應的調整,當然以下會隨著實作案例需要或喜好,沒有一定的方法。

update

為了因應PATCH method,Dao新增一個update method對應,實作時則依照前篇介紹的DynamoDBSaveExpression進行項目id存在才進行儲存,且使用忽略bean當中的null值更新。

public void update(Person peron) {
    DynamoDBSaveExpression expr = new DynamoDBSaveExpression()
        .withExpectedEntry("pk_id", new ExpectedAttributeValue(new AttributeValue(person.getId())));
    mapper.save(person, expr, DynamoDBMapperConfig.builder()
        .withSaveBehavior(SaveBehavior.UPDATE_SKIP_NULL_ATTRIBUTES).build());
}

save

相對的,原本POST或PUT的儲存也應該增加條件,避免request任意提供id也能新增項目,因為id應該是server端才能產生的。

public void save(Person person) {
	if (StringUtils.isNullOrEmpty(person.getId())) {
		person.setId(UUID.randomUUID().toString());
		person.setCreate_date(new Date());
		person.setUpdate_date(new Date());
		mapper.save(person);
	}
	else {
		person.setUpdate_date(new Date());
		DynamoDBSaveExpression expr = new DynamoDBSaveExpression()
				.withExpectedEntry("pk_id", new ExpectedAttributeValue(new AttributeValue(person.getId())));
		mapper.save(person, expr);
	}
}

PATCH method

而之前我們未完成PATCH的部分(因為之前儲存邏輯與要求不符合),只要改成呼叫update method即可

PersonDaoImp.getInstance().update(person);

上一篇
Day26-概論(十四)DynamoDBSaveExpression
下一篇
Day28-概論(十五)含版本編號的樂觀鎖定
系列文
從Java進入AWS部署RESTful API的心路歷程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言