SpringBoot App如何修改put方法更新数组

问题描述 投票:0回答:1

我目前有一个服务,它接收三个参数并在使用 Angular 从前端接收数据时毫无问题地执行更新,我保存的数据来自可修改表的字段,但它仅按行执行,单个编号

这是我在控制器中的方法,有我的服务和我的查询

     @PutMapping("/{cveEstado}/{comentario}/{idControl}")
    private void actualizaDatos(@PathVariable("cveEstado") String cveEstado, @PathVariable("comentario") String comentario,
            @PathVariable("idControl") String idControl){
        controlService.actualizar(cveEstado, comentario, idControl);
        


 }

服务和存储库

    @Override
    public void actualizar(String cveEstado, String comentario, String idControl) {
        
        repository.actualizarCampos(cveEstado, comentario, idControl);
    }

    @Transactional
    @Modifying
    @Query(value = "UPDATE CONTROL C SET CVEESTADO=?1, COMENTARIO=?2 WHERE C.IDCONTROL=?3", 
            nativeQuery = true)
    void actualizarCampos(String cveEstado, String comentario, String idControl);

但现在我想保存整个数组,也就是说,我可以更新所有字段或一些字段但具有不同的 ids

例如

我应该如何修改我的服务和我的查询以接收这样的数据,请有人帮助我

谢谢

java sql spring-boot microservices put
1个回答
0
投票

你应该有一个对应于你的资源模型的类,这样 spring 就可以从请求体中反序列化它:

@PutMapping("/comments")
private void actualizaDatos(@RequestBody List<Comment> comments){
// you probably should return an http status instead of void
}

“评论”是您的 json 对象的 java 类表示。如果模型匹配,spring 会将一个 json 对象数组反序列化为一个 java 对象列表。

class Comment {
int idControl;
String cveEstado;
(...)
}

注意:在 REST 中一次更新多个资源是不好的做法,一个元素中的任何错误都很难检测到,因为整批都会出错,而客户端不知道为什么。

© www.soinside.com 2019 - 2024. All rights reserved.