求助,我想优化这段请求代码,请问如何实现?
感觉从Map中取出值赋给对象这个步骤代码冗余
不过不知道怎么优化?
@RequestMapping(value = "/v1/update/tmPara", method={ RequestMethod.POST }) public ResponseResult updateTmParaV1 (
HttpServletRequest request,
@RequestBody Map<String, Object> tmDdDicSetMap
) {
String code = "200";
String message = "SUCCESS";
ResponseResult responseResult = new ResponseResult();
TmPara tmPara = new TmPara();
// System.out.println(tmDdDicSetMap);
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")));
int tmParaUpdateFlag = tmParaService.updateTmParaV1(tmPara);
// System.out.println("tmParaUpdateFlag == " + tmParaUpdateFlag);
if(tmParaUpdateFlag < 1) {
code = "500";
message = "FAIL";
} else {
responseResult.setData(tmPara);
}
responseResult.setCode(code);
responseResult.setMessage(message);
return responseResult;
}
回答:
既然知道冗余为啥还用 Map…
直接把 @RequestBody Map<String, Object>
换成 @RequestBody TmPara tmPara
就行了,字段名对不上加 @JsonProperty
回答:
用反射应该可以解决问题,但是性能不一定有你这么写好
回答:
你可以研究下 https://github.com/mapstruct/mapstruct
@Mapperpublic interface CarMapper {
CarMapper INSTANCE = Mappers.getMapper( CarMapper.class );
@Mapping(target = "seatCount", source = "numberOfSeats")
CarDto carToCarDto(Car car);
}
其实也是有get
set
,只不过这个是由mapstruct
在编译时自动生成
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
回答:
也许你想要个这样的东西:『十倍程序员』Java五大对象映射框架,总有一款适合你? - 掘金 (juejin.cn)
我没用过,但从介绍来看,Orika 和 ModelMapper 用起来都比较简单。不过简单的查了一下,并没发现 ModelMapper 可以处理 Map 和 Entity 之间的转换,但是 Orika 可以(Orika 实现 Map 和 Entity 之间转换(类型不匹配) - 简书 (jianshu.com))
可以试试看。
回答:
@RequestBody Map<String, Object> tmDdDicSetMap ==> @RequestBody TmPara tmPara
回答:
我直接写吧
@RequestMapping(value = "/v1/update/tmPara", method={ RequestMethod.POST })
public ResponseResult updateTmParaV1 (
HttpServletRequest request, @RequestBody Map<String, Object> tmDdDicSetMap
) {
final String SUCCESS_CODE = "200";final String SUCCESS_MESSAGE = "SUCCESS";
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")));
int tmParaUpdateFlag = tmParaService.updateTmParaV1(tmPara);
ResponseResult responseResult;
try {
responseResult = new ResponseResult();
responseResult.setData(tmParaUpdateFlag < 1 ? null : tmPara);
responseResult.setCode(tmParaUpdateFlag < 1 ? "500" : SUCCESS_CODE);
responseResult.setMessage(tmParaUpdateFlag < 1 ? "FAIL" : SUCCESS_MESSAGE);
} catch (Exception e) {
responseResult = new ResponseResult("500", "FAIL", null);
}
return responseResult;
}
以上是 求助,我想优化这段请求代码,请问如何实现? 的全部内容, 来源链接: utcz.com/p/945084.html