VO转化设计的方法步骤

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

成都创新互联是专业的肇州网站建设公司,肇州接单;提供成都网站制作、网站建设、外贸网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行肇州网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

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


本文名称:VO转化设计的方法步骤
当前URL:http://scyanting.com/article/joecpj.html