gpt4 book ai didi

java - Spring Boot 上的基本放置(更新)

转载 作者:行者123 更新时间:2023-11-30 06:00:02 26 4
gpt4 key购买 nike

我想要一些非常基本的东西。

我只想更新用户。前端为用户发送一个json。我想避免设置 currentUser 的每个值(它有大约 50 个字段)

@PutMapping("user/{id}")
public boolean updateUser(@PathVariable id, @RequestBody User user) {
User currentUser = userRepo.findOne(id);
// What now??

}

最佳答案

你需要做类似的事情。请记住,这种方法对于部分对象更新很有帮助。这意味着如果您的对象(在 RequestBody 中)不包含某些字段(field==null),那么该字段将保持不变。

@PutMapping("user/{id}")
public boolean updateUser(@PathVariable id, @RequestBody User user) {
User currentUser = userRepo.findOne(id);
user = (User) PersistenceUtils.partialUpdate(currentUser, user);
return userRepo.save(user);

}

public class PersistenceUtils {

public static Object partialUpdate(Object dbObject, Object partialUpdateObject){
String[] ignoredProperties = getNullPropertyNames(partialUpdateObject);
BeanUtils.copyProperties(partialUpdateObject, dbObject, ignoredProperties);
return dbObject;
}

private static String[] getNullPropertyNames(Object object) {
final BeanWrapper wrappedSource = new BeanWrapperImpl(object);
return Stream.of(wrappedSource.getPropertyDescriptors())
.map(FeatureDescriptor::getName)
.filter(propertyName -> wrappedSource.getPropertyValue(propertyName) == null)
.toArray(String[]::new);
}


}

关于java - Spring Boot 上的基本放置(更新),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52424734/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com