当前位置: 首页 > 知识库问答 >
问题:

如何在ResponseEntity中不返回null值?

危宜
2023-03-14
{
    "id": null,
    "name": "who",
    "newid": "A8C90A53-78F6-4BD6-9628-CBA8FC349C08"
}
{
    "name": "who",
    "newid": "A8C90A53-78F6-4BD6-9628-CBA8FC349C08"
}
...
Map<String, String> responseBody = new HashMap<>();
responseBody.put("name", nameModel.getName());
responseBody.put("newid", nameModel.getNewId());

return new ResponseEntity<>(responseBody, HttpStatus.OK);

====下面是完整的存储库,如果您希望查看更新后的存储库:https://github.com/kidfrom/g2java/tree/main/etc/mssqlserver

控制器/nameController.java

package com.example.mssqlserver.controller;

import com.example.mssqlserver.mapper.NameMapper;
import com.example.mssqlserver.model.NameModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

@RestController
public class NameController {

  @Autowired
  private NameMapper nameMapper;

  @GetMapping("api/v1/name")
  public ResponseEntity<?> selectAll() {
    return new ResponseEntity<>(nameMapper.selectAll(), HttpStatus.OK);
  }

  @PostMapping("api/v1/name")
  public ResponseEntity<?> insert(@RequestBody NameModel nameModel) {

    // validator
    if (!nameModel.requestIsValid()) {
      return ResponseEntity.badRequest().build();
    }

    if (nameMapper.insert(nameModel) == 1) {
      return new ResponseEntity<>(nameModel, HttpStatus.OK);
    } else {
      return ResponseEntity.badRequest().build();
    }
  }
}

mapper/namemapper.java

package com.example.mssqlserver.mapper;

import com.example.mssqlserver.model.NameModel;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface NameMapper {

  @Select("SELECT * FROM name")
  public List<NameModel> selectAll();

  @SelectKey(statement = "SELECT NEWID()", keyProperty = "newid", resultType = String.class, before = true)
  @Insert("INSERT INTO name (name, newid) VALUES (#{name}, #{newid})")
//  @Options(useGeneratedKeys = true, keyProperty = "id")
  int insert(NameModel nameModel);
}

model/namemodel.java

package com.example.mssqlserver.model;

public class NameModel {
  private Integer id;
  private String name;
  private String newid;

  public NameModel(Integer id, String name, String newid) {
    this.id = id;
    this.name = name;
    this.newid = newid;
  }

  public Integer getId() {
    return id;
  }

  public void setId(Integer id) {
    this.id = id;
  }

  public String getName() {
    return name;
  }

  public String getNewid() {
    return newid;
  }

  public void setNewid(String newid) {
    this.newid = newid;
  }

  public boolean requestIsValid() {
    if (this.name.isEmpty()) return false;

    return true;
  }
}

共有1个答案

郑衡
2023-03-14

我想这个简单的解决办法可以帮助你

https://stackoverflow.com/a/36515285/5108695

由于正在使用Jackson,您必须将其配置为Jackson属性。对于Spring Boot REST服务,您必须在application.properties或application.yml中配置它:

spring.jackson.default-property-inclusion = NON_NULL
 类似资料:
  • 我正在创建一个RESTFul Web服务,其可用服务如下: 当空列表返回时,我将在浏览器中得到以下响应:

  • 问题内容: 假设我有一个Oracle数据库和一个像这样的接口: 如果我致电并且所有列均具有值,则映射包含三个条目。但是,如果为,则地图只有两个条目。在许多情况下,这不是问题,但是在我们代码的通用部分中,我实际上想在该地图上调用,并希望包含三个条目的列表。任何条目都可以是(或一个空字符串,与Oracle中的相同)。 实际上,我真的很高兴这样的事情,其中​​每个外部列表都由具有三个条目的列表组成: 但

  • 我想在下面返回JSON。 {“名字”:“杰基”} 新来的春靴在这里。1天大。有没有合适的方法可以做到这一点?

  • 我试图通过RESTendpoint将数据从一个服务器发送到另一个服务器: 服务器B启动此请求: 服务器A接收请求并返回文件: 因此,很明显,我必须将声明更改为: 或者到 然后错误消失了,但我丢失了HttpStatus。回复时是否有确认信息?这里的正确解决方案是什么?

  • 我有以下模式: 模式反映了一个事实,即我必须返回一个对象。然而,我不能总是这样做,有时我需要返回null。例如,如果我向数据库发出请求,它将返回return object或null(如果找不到用户)。 在我的GraphQL模式中,我为特定字段设置了类型。如果我试图返回一个不同于我设置的类型,我会得到一个错误。如何允许字段返回对象或null?