VO转化设计的方法步骤
这篇文章主要讲解了"VO转化设计的方法步骤",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"VO转化设计的方法步骤"吧!
1、工具类
支持分页列表、不分页列表、单个转化调用,工具代码还是比较简洁,比较清爽的。
public interface VOConvertable {
/**
* 转化为基础接口
* @param source 原始对象
* @return 转化以后的对象
*/
T convertVO(S source);
}
@Slf4j
public class VOConvertUtils extends VOConvertable> {
private VOConvertUtils() {
}
public static VOConvertUtils instance = new VOConvertUtils();
/**
* 查询分页信息
* @param sourcePage 传入的分页DTO
* @param targetClazz 转化的目标对象
* @return 返回的集合
*/
public PagedDTO sourcePage,Class
if (sourcePage == null || sourcePage == null ) {
return null ;
}
PagedDTO new PagedDTO
pageResult.setPageNum(sourcePage.getPageNum());
pageResult.setPageSize(sourcePage.getPageSize());
pageResult.setTotalRecord(sourcePage.getTotalRecord());
pageResult.setList(convertVOList(sourcePage.getList(),targetClazz));
return pageResult;
}
/**
* 查询列表信息
* @param sources 传入的集合
* @param targetClazz 转化的目标对象
* @return 返回的集合
*/
public List sources,Class
if (sources == null || targetClazz == null ) {
return null ;
}
List new ArrayList
for (S source: sources) {
list.add((T) convertVO(source,targetClazz));
}
return list;
}
/**
* 对象转化
* @param source 原始对象
* @param targetClazz 目标对象
* @return 转化以后的对象
*/
public T convertVO(S source,Class
if (source == null || targetClazz == null ) {
return null ;
}
try {
T instance = targetClazz.newInstance();
return (T)instance.convertVO(source);
} catch (Exception e) {
log.error( "convertVO error" ,e);
return null ;
}
}
}
2、 vo对象改造
1: vo对象需要增加@Builder @AllArgsConstructor @NoArgsConstructor 这几个注解,其实构造模式通过lombok插件来处理了,我们无需自己去实现,只需要构造相关的数据就好了。
2: vo对象实现VOConvertable这个接口来实现转化为vo接口, 接口定义的泛形需要调用方自己传递。
@Data
@ApiModel (value = "转链结果类" )
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ItemConvertVO implements VOConvertable
private static final long serialVersionUID = -1194554463611634742L;
@ApiModelProperty (value = "商品ID" )
private String id;
@ApiModelProperty (value = "第三方商品ID" )
private String itemId;
@ApiModelProperty (value = "优惠券转链" )
private String couponUrl;
@ApiModelProperty (value = "商品转链" )
private String itemUrl;
@Override
public ItemConvertVO convertVO(ItemConvertDTO itemConvertDTO) {
if (itemConvertDTO == null ) {
return null ;
}
return ItemConvertVO.builder()
.couponUrl(itemConvertDTO.getCouponUrl())
.itemUrl(itemConvertDTO.getItemUrl())
.itemId(itemConvertDTO.getItemId())
.id(String.valueOf(itemConvertDTO.getId()))
.build();
}
}
3、 对应的controller的调用
这边需要将ItemConvertDTO转化为ItemConverVO,一行代码就可以了,使用起来也很便捷。
@RequestMapping (value = "/convert" , method = RequestMethod.GET)
@ApiOperation (value = "商品详情-转链接口" )
public ItemConvertVO itemConvert( @RequestParam ( "id" ) String id) {
AnchorDubboDTO anchorDubboDTO = AnchorHolder.checkStatusAndGetAnchor();
log.info(String.format( "%s|/app/item/convert|GET|id=%s" , anchorDubboDTO.getAnchorId(), id));
checkId(id);
ItemConvertDTO itemConvertDTO = itemService.itemUrlConvert(Long.valueOf(id));
return (ItemConvertVO) VOConvertUtils.instance.convertVO(itemConvertDTO,ItemConvertVO. class );
}
感谢各位的阅读,以上就是"VO转化设计的方法步骤"的内容了,经过本文的学习后,相信大家对VO转化设计的方法步骤这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!