RestTemplate使用帶泛型的返回體
1、以同步樓宇數據爲例
public void syncBuilding() {
HttpEntity httpEntity = new HttpEntity(PostData.getInstance());
// 使用ParameterizedTypeReference進行包裝
ParameterizedTypeReference<CampusResult<List<Building>>> reference = new ParameterizedTypeReference<CampusResult<List<Building>>>() {};
try {
// exchange方法中需要放reference,而不是CampusResult
ResponseEntity<CampusResult<List<Building>>> entity = restTemplate.exchange(DormConstant.GET_DORM_BUILDING, HttpMethod.POST,httpEntity,reference);
if (entity.getStatusCode().is2xxSuccessful()){
CampusResult<List<Building>> result = entity.getBody();
List<Building> buildingList = result.getData();
if (CollectionUtils.isNotEmpty(buildingList)){
buildingList.forEach(building -> {
buildingDao.save(building);
});
}
}
}catch (Exception e){
log.error("同步樓宇異常: {}",e.getMessage());
}
}
2、在此例子中使用CampusResult<7>作爲統一的接收格式。
@Data
public class CampusResult<T> {
private String code;
private boolean state;
private String message;
private T data;
}
3、在實際接收數據時T又是一個List。Bulding實體類如下
@Data
public class Building {
private String buildingNumber;
private String buildingName;
}
小尾巴~~
只要有積累,就會有進步