解决属性命名不规范导致接收不到数据问题
Bug描述
使用postman进行接口测试的时候,发现接收参数有一个属性怎么也接收不到数据,其他的属性都可以正常接收。也仔细检查过名称是否一致等种种可能问题,还是不知道怎么回事。
Bug原因
项目中使用Lombok的@Date注解来自动生成get、set方法,如果这时有一些属性的命名不规范,可能导致生成的get、set方法名字有些特殊,这就是导致参数接收不到数据的原因。
例如:项目中"qChargeAmt"这个参数尽管已经符合驼峰命名法了,但仍然接收不到参数
//附加费
private BigDecimal qChargeAmt
//使用Lombok自动生成的get、set方法,接收不到数据
entry.setQchargeamt(BigDecimal qChargeAmt);
entry.getQchargeamt();
解决办法
-
检查传参的名字是否一致
-
接受不到数据的参数命名是否规范,如果不规范则进行修改
-
如果参数命名不规范,但是名字不能修改,还有两种方法可以解决:
一是重写这个属性的get、set方法(重写的时候我是用idea自动生成的,虽然方法命名有些怪,但是可以接收到数据了);
//重写get、set方法 public BigDecimal getqChargeAmt() { return qChargeAmt; } public void setqChargeAmt(BigDecimal qChargeAmt) { this.qChargeAmt = qChargeAmt; }二是对属性重命名,并使用
@JsonProperty或@JsonField,在序列化或反序列化时对属性进行重命名。@JsonProperty(value = "qChargeAmt") @JsonField(name = "qChargeAmt") @TableField(value = "Q_CHARGE_AMT") //项目中使用mybatis-plus,使用这个注解可以和数据库字段名对应起来 private BigDecimal qchargeamt;@JsonProperty或@JsonField的作用和区别可以自己搜索一下,使用第二种方法,在属性进行接收和发送的时候,仍是qChargeAmt。

浙公网安备 33010602011771号