如何優化從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 分享