如何在spring中返回db保存的json的id

v64noz0r  于 2021-07-09  发布在  Java
关注(0)|答案(3)|浏览(339)

我正在为json教程构建一个示例应用程序。在发布json对象(描述和日期)之后,应该在数据库中自动生成一个id。如何将这个id作为json响应中的唯一字段?

@JsonView(View.Summary.class)
    @PostMapping(path = "/api/object/new")
    public Object AddObjectApi(@RequestBody Map<String, String> object) {

        Object newObject = new Object(
            object.get("description"),
            LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS));

        Object savedObject = repository.save(newObject);
        savedCObject.getId();

        return savedObject;
    }

示例输入(post json):

{
   "description" : "This is object description"
}

示例输出(返回json响应):

{
   "id" : "1"
}
sc4hvdpw

sc4hvdpw1#

您可以创建一个名为id的字段的新类

public class ResponseData{
   public Integer id;

   public ResponseData(){

   }

   public ResponseData(Integer id){
     this.id = id;
   }
}

然后在db中保存对象后,可以返回如下响应

@PostMapping(path = "/api/object/new")
    public ResponseData AddObjectApi(@RequestBody Map<String, String> object) {

        Object newObject = new Object(
            object.get("description"),
            LocalDateTime.now().truncatedTo(ChronoUnit.SECONDS));

        Object savedObject = repository.save(newObject);

        ResponseData responseData = new ResponseData(savedObject.getId());
        return responseData;
    }
rryofs0p

rryofs0p2#

如果您使用的是实体类,那么 id 实体中的列应具有此行 @GeneratedValue(strategy = GenerationType.IDENTITY) 在数据库中保存实体类时 .save 将返回包含新生成的id的已保存实体 entity = repository.save(entity); 然后你可以得到保存在数据库中的数据的id entity.getId() 您可以使用getter setter创建另一个id为vaiable的pojo类,并返回pojo的示例

ResponseSchema response = new ResponseSchema();
response.setId(entity.getId);

return response;
g6baxovj

g6baxovj3#

对不起我的英语。
首先,我使用jackson将对象转换为json或相反。
创建一个表示json对象的实体。
我在考虑你在和jparepository合作
你的团结
//开始将json转换为实体

YourJsonEntity entity = new ObjectMapper().readValue(data, YourJsonEntity.class);

//持久化对象//save从数据库返回对象。他有价值观

YourJsonEntity entityFromDb = this.entityRepository.save(entity);
System.out.println(entityFromDb.getId());

我发现这个可以将属性提取为json

String json = "{ \"color\" : \"Black\", \"type\" : \"FIAT\" }";
JsonNode jsonNode = objectMapper.readTree(json);
String color = jsonNode.get("color").asText();
// Output: color -> Black

相关问题