当前位置: 首页 > 工具软件 > iPage > 使用案例 >

MybatisPlus IPage<V>转IPage<B> 封装工具类

孙承
2023-12-01

前言

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;
    }
}

非常的好用,博主已经帮你们测试了!!

 类似资料: