
提升代码效率:优化Map值到对象属性的赋值
本文将演示如何优化一段将Map请求参数赋值给对象的代码,该代码存在冗余的从Map中获取值并逐个赋值给对象属性的问题。原始代码如下:
@RequestMapping(value = "/v1/update/tmPara", method={ RequestMethod.POST })
public ResponseResult updateTmParaV1 (
HttpServletRequest request,
@RequestBody Map tmDdDicSetMap
) {
// ... 省略部分代码 ...
TmPara tmPara = new TmPara();
tmPara.setParId(String.valueOf(tmDdDicSetMap.get("parId")));
tmPara.setParNam(String.valueOf(tmDdDicSetMap.get("parNam")));
tmPara.setParVal(String.valueOf(tmDdDicSetMap.get("parVal")));
tmPara.setRemark(String.valueOf(tmDdDicSetMap.get("remark")));
tmPara.setRecStaDat(String.valueOf(tmDdDicSetMap.get("recStaDat")));
tmPara.setRecStpFlg(String.valueOf(tmDdDicSetMap.get("recStpFlg")));
tmPara.setRecStpDat(String.valueOf(tmDdDicSetMap.get("recStpDat")));
tmPara.setRecSta(String.valueOf(tmDdDicSetMap.get("recSta")));
tmPara.setBusSta(String.valueOf(tmDdDicSetMap.get("busSta")));
// ... 省略部分代码 ...
}
这段代码重复使用String.valueOf(tmDdDicSetMap.get(...)),显得冗长且难以维护。
利用Spring MVC特性优化代码
为了简化代码,我们可以直接利用Spring MVC特性,避免使用Map接收请求参数。 我们可以直接将请求体映射到TmPara对象上。
优化后的代码:
只需将@RequestBody Map替换为@RequestBody TmPara tmPara。如果请求体字段名与TmPara属性名不一致,可以使用@JsonProperty注解进行映射。
例如,如果请求体字段名为par_id,而TmPara属性名为parId,则需在TmPara类中添加注解:
public class TmPara {
@JsonProperty("par_id")
private String parId;
// ... 其他属性 ...
}
通过此优化,Spring MVC会自动将请求体数据映射到TmPara对象,避免了手动从Map中获取值并赋值的冗余步骤,使代码更简洁、易读且不易出错。
@RequestMapping(value = "/v1/update/tmPara", method={ RequestMethod.POST })
public ResponseResult updateTmParaV1 (
HttpServletRequest request,
@RequestBody TmPara tmPara
) {
// ... 省略部分代码 ...
int tmParaUpdateFlag = tmParaService.updateTmParaV1(tmPara);
// ... 省略部分代码 ...
}










