温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

VO转化设计的方法步骤

发布时间:2021-10-12 10:31:00 来源:亿速云 阅读:134 作者:iii 栏目:编程语言

这篇文章主要讲解了“VO转化设计的方法步骤”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“VO转化设计的方法步骤”吧!

1、工具类

    支持分页列表、不分页列表、单个转化调用,工具代码还是比较简洁,比较清爽的。

public   interface   VOConvertable<S,T> {

     /**

      * 转化为基础接口

      * @param source 原始对象

      * @return 转化以后的对象

      */

     T convertVO(S source);

}

@Slf4j

public     class     VOConvertUtils<S,T   extends     VOConvertable> {

      private     VOConvertUtils() {

      }

      public     static     VOConvertUtils instance =   new     VOConvertUtils();

      /**

       * 查询分页信息

       * @param sourcePage 传入的分页DTO

       * @param targetClazz 转化的目标对象

       * @return 返回的集合

       */

      public     PagedDTO<T> convertVOPage(PagedDTO<S> sourcePage,Class<T> targetClazz) {

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

              return     null  ;

          }

          PagedDTO<T> pageResult =   new     PagedDTO<T>();

          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<T> convertVOList(List<S> sources,Class<T> targetClazz)  {

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

              return     null  ;

          }

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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI