中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

VO轉化設計的方法步驟

發布時間:2021-10-12 10:31:00 來源:億速云 閱讀:132 作者: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

安溪县| 盐源县| 松原市| 靖宇县| 伽师县| 赤城县| 齐河县| 崇信县| 宁夏| 三原县| 乌鲁木齐市| 商洛市| 浦东新区| 苏州市| 高陵县| 明溪县| 祥云县| 泰来县| 新余市| 乐清市| 晋宁县| 阿克陶县| 林口县| 榆树市| 政和县| 封丘县| 贺州市| 沧州市| 和平区| 和顺县| 舞钢市| 祁阳县| 多伦县| 玛纳斯县| 潼南县| 松原市| 翁牛特旗| 惠来县| 黄浦区| 平利县| 呼图壁县|