对象转换工具类
/**
* 转换工具类
*/
public class ConvertUtils {
private static Logger logger = LoggerFactory.getLogger(ConvertUtils.class);
public static <T> T sourceToTarget(Object source, Class<T> target){
if(source == null){
return null;
}
T targetObject = null;
try {
targetObject = target.newInstance();
BeanUtils.copyProperties(source, targetObject);
} catch (Exception e) {
logger.error("convert error ", e);
}
return targetObject;
}
public static <T> List<T> sourceToTarget(Collection<?> sourceList, Class<T> target){
if(sourceList == null){
return null;
}
List targetList = new ArrayList<>(sourceList.size());
try {
for(Object source : sourceList){
T targetObject = target.newInstance();
BeanUtils.copyProperties(source, targetObject);
targetList.add(targetObject);
}
}catch (Exception e){
logger.error("convert error ", e);
}
return targetList;
}
}
源实体类 RsDeviceEntity
/**
* 源实体类: 网络设备同步记录表
*/
@Data
@TableName("dl_resrs_device")
public class DlResrsDeviceEntity {
private Long id;
/**
* 设备类型ID 0: 路由器 1: 交换机 2:服务器 9:PC
*/
private Long categoryId;
}
目标实体类 DlResrsDeviceEntity
/**
* 目标实体类: 网络设备表
*/
public class RsDeviceEntity {
@JsonProperty("categoryId")
private Long categoryId = null;
}
转换代码
// 遍历数据集
for (RsDeviceEntity rsDeviceEntity : rsDeviceEntitys.getDevices()) {
// 对象转换
DlResrsDeviceEntity dlResrsDeviceEntity = ConvertUtils.sourceToTarget(rsDeviceEntity, DlResrsDeviceEntity.class);
// 入库
resrsDeviceDao.insert(dlResrsDeviceEntity);
}
转换失败
当源对象的categoryId字段类型是Integer类型,而模板对象的categoryId字段类型是Long类型时
实体类
数据库
转换成功
当categoryId字段类型都是Long类型时