千家信息网

VO转化设计的方法步骤

发表于:2024-11-15 作者:千家信息网编辑
千家信息网最后更新 2024年11月15日,这篇文章主要讲解了"VO转化设计的方法步骤",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"VO转化设计的方法步骤"吧!1、工具类支持分页列表、不分页列表
千家信息网最后更新 2024年11月15日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 convertVOPage(PagedDTO sourcePage,Class targetClazz) {

if (sourcePage == null || sourcePage == null ) {

return null ;

}

PagedDTO pageResult = 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 convertVOList(List sources,Class targetClazz) {

if (sources == null || targetClazz == null ) {

return null ;

}

List list = new ArrayList(sources.size());

for (S source: sources) {

list.add((T) convertVO(source,targetClazz));

}

return list;

}

/**

* 对象转化

* @param source 原始对象

* @param targetClazz 目标对象

* @return 转化以后的对象

*/

public T convertVO(S source,Class targetClazz) {

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,Serializable {

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转化设计的方法步骤这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

0