MybatisPlus 提供了分页查询的方法,返回 IPage< T > 类型,但是有时候我们需要再将拿到
的 IPage< T > 类型再转一下,返回 IPage< B >,
比如得到 IPage< User > ,但是User 实体的部分字段我们想要隐藏 , 不做返回,我们返回
IPage< UserDTO>
IPage< T >作为一个接口,部分版本的确是提供了一个 covert()方法。但部分版本的 MybatisPlus 是没有的。所以这里我们重新自己写了一个工具类:
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.ArrayList;
import java.util.List;
/**
* IPage<T> 转IPage<B>封装工具类
*
* @Author:Jarvis
* @Date 2021/8/17 17:12
*/
public class PageCovertUtil {
/**
* 将PageInfo对象泛型中的Po对象转化为Vo对象
*
* @param pageInfoPo PageInfo<Po>对象</>
* @param <V> V类型
* @return
*/
public static <P,V> IPage<V> pageVoCovert(IPage<P> pageInfoPo, Class<V> v) {
// 创建Page对象,实际上是一个ArrayList类型的集合
try {
if (pageInfoPo != null) {
IPage<V> page = new Page<>(pageInfoPo.getCurrent(), pageInfoPo.getSize());
page.setTotal(pageInfoPo.getTotal());
List<P> records = pageInfoPo.getRecords();
List<V> list = new ArrayList<>();
for (P record : records) {
if(record!=null){
V newV = v.newInstance();
// 把原对象数据拷贝到新的对象
BeanUtil.copyProperties(record,newV);
list.add(newV);
}
}
page.setRecords(list);
page.setTotal(pageInfoPo.getTotal());
return page;
}
}catch (Exception e){
e.printStackTrace();
}
return null;
}
}
非常的好用,博主已经帮你们测试了!!