我要编辑一个用户,是否应该用另一个用户替换它?还是应该只替换属性?
我有这个控制器
@PostMapping("/edit")
public ResponseEntity<User> editUser(@RequestBody User user) {
log.info("EDIT");
return new ResponseEntity<User>(userServiceImpl.editUser(user), HttpStatus.OK);
}
这是我的服务
public User editUser(User user) {
User owner = userRepository.findById(user.getId());
owner=user;
userRepository.save(user);
return owner;
}
班级用户是
@Entity
@Table(name = "User")
public class User implements Serializable {
private static final long serialVersionUID = -3009157732242241606L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column(name = "name")
private String name;
@Column(name = "password")
private String password;
@Column(name = "email")
private String email;
我需要做类似的事情,我是说要对bd执行插入查询吗?
@Modifying
@Query("update User u set u.firstname = ?1, u.lastname = ?2 where u.id = ?3")
void setUserInfoById(String firstname, String lastname, Integer userId);
答案 0 :(得分:1)
只需保存更新的用户
public User editUser(User user) {
return userRepository.save(user);
}
足够了。
答案 1 :(得分:1)
说明清楚。 让我们想想这简单。
您有userRepository.save(user); 它会做什么?
domain:port / user / {userId} /(PUSH),并在此处更改一些字段。 〜>获取数据库中的真实obj〜>更新对象并执行SAVE。 /〜>或者,您也可以直接进行查询更新
答案 2 :(得分:1)
在这里,这将确保没有数据丢失并且不会生成新记录。
public User editUser(User user) {
User owner = userRepository.findById(user.getId());
if(user.getName != null){
owner.setName(user.getName);
}
if(user.getPassword != null){
owner.setPassword(user.getPassword);
}
if(user.getEmail != null){
owner.setEmail(user.getEmail);
}
return userRepository.save(owner);
}