练手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,欢迎持续关注喵容 – 分享互联网最精品内容。
不错