「Java笔记」 通过BeauUtils 和 lambda表达式 转换对象

Java-BeauUtils-lambda-converter

练手JAVA中,写个笔记。碰到很多时候在做列表查询时,需要将DAO层传过来的对象进行处理和转换。那么如果我们碰到需要在换换对象的时候,可以考虑封装Converter来简化业务代码,其中我们可以用BeauUtilslambda表达式快速完成,特别是lambda,功能强大。

场景描述

@Override
public Page<OrderDTO> findList(String buyerOpenid, Pageable pageable) {
    Page<OrderMaster> orderMasterPage = orderMasterRepository.findByBuyerOpenid(buyerOpenid, pageable);

    orderMasterPage.getContent();

    Page<OrderDTO> orderDTOPage = new PageImpl<OrderDTO>(这里是需要传的参数);//报红了,需要传参
    return orderDTOPage;
}

首先咱们接收了orderMasterRepositoryPage对象,一顿操作,然后我们在实例化PageImpl时,报了类型错误。

那么我们瞅瞅PageImpl源码,看看需要什么参数。

public PageImpl(List<T> content, Pageable pageable, long total) {
    super(content, pageable);
    this.total = (Long)pageable.toOptional().filter((it) -> {
    return !content.isEmpty();
    }).filter((it) -> {
    return it.getOffset() + (long)it.getPageSize() > total;
    }).map((it) -> {
    return it.getOffset() + (long)content.size();
    }).orElse(total);
}

OK,需要ListPageabletotal。所以开始写个Convert封装,直接贴个示例代码吧。

新建package:converter,新建OrderMaster2OrderDTOConverter

public class OrderMaster2OrderDTOConverter {
    public static OrderDTO convert(OrderMaster orderMaster) {
        OrderDTO orderDTO = new OrderDTO();

        BeanUtils.copyProperties(orderMaster, orderDTO);
        return orderDTO;
    }

    public static List<OrderDTO> convert(List<OrderMaster> orderMasterList) {
        return orderMasterList.stream().map(e ->
                convert(e)
        )
                .collect(Collectors.toList());
    }
}

Done,欢迎持续关注喵容 - 分享互联网最精品内容

参与评论