前提
boolean类型的变量命名由is开头时,IDEA自动生成get、set方法的问题。
实体类上面使用@Data注解,boolean类型的字段
private boolean isUpdateSpecies;
这时候如果前端JSON传值:
isUpdateSpecies:true
后端接口中的接收参数里面发现:
isUpdateSpecies:false
原因
阿里巴巴Java开发手册中对POJO类中布尔类型的变量命名有明确规定。布尔类型的变量不要加is前缀。
java中,boolean类型的参数对应的set方法时isxxx();
布尔类型的参数是以“is”开头,自动生成的get,set方法就会有问题:
public boolean isUpdateSpecies() {
return isUpdateSpecies;
}
public void setUpdateSpecies(boolean updateSpecies) {
updateSpecies = updateSpecies;
}
这样get,set方法就获取不到正确的值,会导致用实体接收前端参数时,对应的字段没有值。
解决
1.设计数据库时,boolean类型的字段不要以is开头。
2.如果无法更改数据库字段时,可以去掉@Data注解,然后手动生成get,set方法,修改一下方法体。
public boolean isUpdateSpecies() {
return isUpdateSpecies;
}
public void setIsUpdateSpecies(boolean isUpdateSpecies) {
this.isUpdateSpecies = isUpdateSpecies;
}
特别是注意set方法,这样前端传值就可以正常获取了。