resttemplate.exchange远程调用

String url = "http://"+ dataPickerIpAndPort+"/myHouse/getMyHouse?userName="+userName+"&idCard="+idCard+"&buyer="+buyer+"&contractNum="+contractNum; 
try {
System.out.println("findCompanies's url:"+url);
body = restTemplate.exchange(
url
, HttpMethod.POST
, null
, new ParameterizedTypeReference<AnswerDTONew<MyHouseDTO>>() {
}).getBody();
if(body==null){
return new AnswerDTONew(true,"not found",new MyHouseDTO(), CommonState.ERROR);
}
}catch (Exception e){
return new AnswerDTONew(true,e.getMessage(),"", CommonState.ERROR);
}
@RequestMapping(value = "/myHouse/getMyHouse")
AnswerDTONew<MyHouseDTO> getMyHouse(@RequestParam(name = "idCard") String idCard,
@RequestParam(name = "buyer") String buyer,
@RequestParam(name = "contractNum") String contractNum);

使用重载避免过多修改客户代码

比如原先计算最大值有个方法,是根据字段id计算最大值

private Long getMaxId(String table){
List<Map<String, Object>> maps = jdbcTemplate.queryForList("select max(id) mid from " + table);
if(maps.size()>0){
Long mid = (Long) maps.get(0).get("MID");
return mid;
}else{
return 1L;
}
}

然后客户有很多调用了此代码。

后来有发现有需求要根据其他字段来计算最大值。

那么,是如果简单在上面方法上增加参数,就会导致调用方代码大量修改。

这时,可以保留上述方法,增加一个重载方法

private Long getMaxId(String table, String field){
List<Map<String, Object>> maps = jdbcTemplate.queryForList("select max("+field+") mid from " + table);
if(maps.size()>0){
Long mid = (Long) maps.get(0).get("MID");
return mid;
}else{
return 1L;
}
}

那么原来的方法,只需要调用次方法即可。

private Long getMaxId(String table){
return getMaxId(table,"id");
}

这样既避免了客户代码的大量修改,又避免了两个重载方法的代码重复冗余。