您好,登錄后才能下訂單哦!
這篇文章主要講解了“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
;
}
}
}
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();
}
}
這邊需要將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轉化設計的方法步驟這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。