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;
}
小尾巴~~
只要有积累,就会有进步