1.区别
PUT:更新实体中所有字段信息,前端需要提交实体中所有字段;
PATCH:更新实体中部分字段信息,只需要上传需要修改的字段;
2.使用
Put使用比较简单,就是把实体所有字段信息上传上去更新
PATCH使用参考了别人写的,定义了一个上传格式类:PatchDataDto
@Data
@ApiModel("patch方法通用对象")
public class PatchDataDto {
@ApiModelProperty(value ="字段名",required =true)
@NotBlank(message ="字段名不能为空")
private Stringfield;
@ApiModelProperty(value ="新value",allowEmptyValue =true)
private Objectvalue;
}
然后利用Java反射类将字段更新入实体后,更新实体
WyOrderRepair wyOrderRepair =wyOrderRepairMapper.selectByPrimaryKey(id);
for (PatchDataDto patchDataDto:list) {
Field field = ReflectionUtils.findField(WyOrderRepair.class, patchDataDto.getField());
field.setAccessible(true);
if(field.getType() == Date.class&&patchDataDto.getValue()!=null){
ReflectionUtils.setField(field, wyOrderRepair, new Date(Long.parseLong(patchDataDto.getValue().toString())));
}else{
ReflectionUtils.setField(field, wyOrderRepair, patchDataDto.getValue());
}
}
wyOrderRepairMapper.updateByPrimaryKey(wyOrderRepair);
数据库操作使用了mybatis