本文将演示如何优化一段将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特性,避免使用Map接收请求参数。 我们可以直接将请求体映射到TmPara对象上。
优化后的代码:
只需将@RequestBody Map
例如,如果请求体字段名为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