本文將演示如何優化一段將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