如何更新 DAO 中的对象参数?
How to update object parameter in DAO?
我是 Java 的新手,正在尝试了解 MVC 架构的发展方向。 如果我在浪费你的时间,请原谅我。我写了一个 DAO 服务,它处理 crud 模型(获取、读取、更新、删除)。
public List<User> getUsers();
public User getUser(Long userId);
public void createUser(User user);
public void updateUser(User user);
public void delete(Long userId);
}
这是我的抽象 DAO 函数。
@Override
@Transactional
public void updateUser(User user) {
em.merge(user);
}
和控制器:
@PutMapping(value = "/{userId}", produces = "application/json")
public ResponseEntity<UserDTO> update(@PathVariable Long userId, @RequestBody UserDTO user){
try{
service.updateUser(user);
return new ResponseEntity<>(HttpStatus.OK);
} catch (HttpClientErrorException p){
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
} catch (HttpServerErrorException.InternalServerError u){
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
在服务中:
@Override
public void updateUser(UserDTO user) {
userDAO.updateUser(ApiDTOBuilder.userDTOToUser(user));
}
如何传递 userId 并将新参数设置到当前用户对象中?
首先您需要使用 DAO 方法获取用户。然后您需要将值设置为用户实体。当您使用@Transactional 时,spring 将负责更新值。
@Override
@Transactional
public void updateUser(Long userId,UserDTO userdto) {
User user= getUser(userId);
user.setFirstName(userdto.getFirstName());
user.setLastName(userdto.getLastName())
}
此外,如果您没有使用Spring引导,则需要使用
启用事务管理
@EnableTransactionManagement
我是 Java 的新手,正在尝试了解 MVC 架构的发展方向。 如果我在浪费你的时间,请原谅我。我写了一个 DAO 服务,它处理 crud 模型(获取、读取、更新、删除)。
public List<User> getUsers();
public User getUser(Long userId);
public void createUser(User user);
public void updateUser(User user);
public void delete(Long userId);
}
这是我的抽象 DAO 函数。
@Override
@Transactional
public void updateUser(User user) {
em.merge(user);
}
和控制器:
@PutMapping(value = "/{userId}", produces = "application/json")
public ResponseEntity<UserDTO> update(@PathVariable Long userId, @RequestBody UserDTO user){
try{
service.updateUser(user);
return new ResponseEntity<>(HttpStatus.OK);
} catch (HttpClientErrorException p){
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
} catch (HttpServerErrorException.InternalServerError u){
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
在服务中:
@Override
public void updateUser(UserDTO user) {
userDAO.updateUser(ApiDTOBuilder.userDTOToUser(user));
}
如何传递 userId 并将新参数设置到当前用户对象中?
首先您需要使用 DAO 方法获取用户。然后您需要将值设置为用户实体。当您使用@Transactional 时,spring 将负责更新值。
@Override
@Transactional
public void updateUser(Long userId,UserDTO userdto) {
User user= getUser(userId);
user.setFirstName(userdto.getFirstName());
user.setLastName(userdto.getLastName())
}
此外,如果您没有使用Spring引导,则需要使用
启用事务管理@EnableTransactionManagement