练手JAVA中,写个笔记。碰到很多时候在做列表查询时,需要将DAO层传过来的对象进行处理和转换。那么如果我们碰到需要在换换对象的时候,可以考虑封装 Converter
来简化业务代码,其中我们可以用 BeauUtils
和 lambda表达式
快速完成,特别是 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; }
首先咱们接收了 orderMasterRepository
的 Page
对象,一顿操作,然后我们在实例化 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,需要 List
、 Pageable
、 total
。所以开始写个 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,欢迎持续关注 喵容 - 分享互联网最精品内容 。