首页 > 解决方案 > 我正在编写一个控制器来列出 Spring Boot Web Flux 中的员工 ID 和姓名。但是在列表控制器中也可以获取浮动值

问题描述

我已经使用 JDBC 模板从数据库中检索详细信息,并且我在数据库中有一个浮点值为 0.0 的字段。我期待这个获取请求中只有员工姓名和 ID,但不知道为什么我在控制器中也得到这个浮点值。

请帮我解决这个问题。谢谢你!

 public Flux<Emplotee> getAllEmployeeIdsAndName() {

        List<Employee> allEmployee = jdbcTemplate.query(Queries.GET_ALL_EMPLOYEE_IDS_NAME, new RowMapper<Employee>() {
            @Override
            public Employee mapRow(ResultSet resultSet, int i) throws SQLException {
                Employee employee = new Employee();
                employee.setId(resultSet.getString("employee_id"));
                employee.setName(resultSet.getString("employee_name"));
                return employee;
            }
        });
        return Flux.fromIterable(allEmployee);
    }

使用的查询:

        private static final String GET_ALL_EMPLOYEE_IDS_NAME = "select  employee_id , employee_name from employee";

我想从列表中排除这个分数值。

 {
        "score": 0.0,
        "employee_name": "John doe",
        "employee_id": "97e3-f566c43cac3e"
    }

公共类员工{

   @JsonProperty("id")
   private String employee_id;
   private String employee_name;
   private float score;
   public String getId() {
      return id;
    }
   public void setEmployeeId(String employee_id) {  
      this.id = id;  
    }
   public String getName() { 
      return name; 
    } 
   public void setEmployeeName(String employeeName) { 
    this.name = name; 
    } 
   public float getScore() {
     return score; 
      }
   public void setScore(float score) { 
       this.score = score;
     }

}

标签: javamysqljdbccontrollerresultset

解决方案


你可以floatEmployee课堂上使用原语。float 的默认值是0.0f Use wrapper class for float,即Float. Float的默认值为null。所以你会得到回应

   {
        "score": null,
        "employee_name": "John doe",
        "employee_id": "97e3-f566c43cac3e"
    }

注意: 如果你真的想忽略这个属性,那么你可以使用@JsonIgnore注解。@JsonIgnore用于忽略序列化和反序列化中使用的逻辑属性。@JsonIgnore可用于 setter、getter 或字段。

public class Employee {
    @JsonProperty("id")
    private String id;
    private String name;

    @JsonIgnore
    private Float score;
    public String getId() {
        return id;
    }
    public void setEmployeeId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setEmployeeName(String name) {
        this.name = name;
    }
    public Float getScore() {
        return score;
    }
    public void setScore(Float score) {
        this.score = score;
    }
}

推荐阅读