将entity类型的分页列表转换成vo类型,涉及到单例模式、stream流
示例
写一个basewrapper类(这个类是配合单例模式使用)
/**
* 视图包装基类
*/
public abstract class BaseEntityWrapper<E, V> {
/**
* 单个实体类包装
*
* @param entity 实体类
* @return V
*/
public abstract V entityVO(E entity);
/**
* 实体类集合包装
*
* @param list 猎豹
* @return List V
*/
public List<V> listVO(List<E> list) {
//map集合中调用实现后的entityVO方法进行copy
return list.stream().map(this::entityVO).collect(Collectors.toList());
}
/**
* 分页实体类集合包装
*
* @param pages 分页
* @return Page V
*/
public IPage<V> pageVO(IPage<E> pages) {
List<V> records = listVO(pages.getRecords());
IPage<V> pageVo = new Page<>(pages.getCurrent(), pages.getSize(), pages.getTotal());
pageVo.setRecords(records);
return pageVo;
}
}
单例模式的类
public class EntityWrapper extends BaseEntityWrapper<Entity, VO> {
public static InformationInfoWrapper build(){
return new EntityWrapper();
}
@Override
public VO entityVO(Entity model) {
VO vo = BeanUtil.copy(model, VO.class);
return vo;
}
}
可以看出直接使用build后pageVO方法,静态方法中将对应的entity类型分页列表copy成vo类型的分页列表