【问题标题】:How to update object parameter in DAO?如何更新 DAO 中的对象参数?
【发布时间】:2020-07-01 07:46:29
【问题描述】:

我是 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 并将新参数设置到当前用户对象中?

【问题讨论】:

    标签: java spring dao


    【解决方案1】:

    首先您需要使用 DAO 方法获取用户。然后您需要将值设置为 User 实体。当您使用@Transactional 时,spring 将负责更新值。

        @Override
        @Transactional
        public void updateUser(Long userId,UserDTO userdto) {
    
            User user= getUser(userId);
            user.setFirstName(userdto.getFirstName());
            user.setLastName(userdto.getLastName())
           }
    

    另外,如果你没有使用 Spring Boot,那么你需要通过使用来启用事务管理

    @EnableTransactionManagement

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-27
      • 1970-01-01
      • 2014-11-20
      • 1970-01-01
      • 1970-01-01
      • 2021-07-24
      相关资源
      最近更新 更多