如何优化从Map获取值并赋值给对象的代码?

如何优化从Map获取值并赋值给对象的代码?

提升代码效率:优化map值到对象属性的赋值

本文将演示如何优化一段将Map请求参数赋值给对象的代码,该代码存在冗余的从Map中获取值并逐个赋值给对象属性的问题。原始代码如下:

@RequestMapping(value = "/v1/update/tmPara", method={ RequestMethod.POST }) public ResponseResult updateTmParaV1 (         HttpServletRequest request,         @RequestBody Map<String, Object> 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 tmDdDicSetMap替换为@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);     // ... 省略部分代码 ... }

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享