为了账号安全,请及时绑定邮箱和手机立即绑定

已经查到User列表,想返回userVo列表,这里Ipage是个接口,要怎么转换呢?

public IPage<OrderVo> pageOrderByQuery() {
    QueryWrapper<Order> queryWrapper = new QueryWrapper<Order>();
    IPage<Order> page1 = orderMapper.selectPage(new Page(), queryWrapper);
            //这里Ipage是一个接口,如何将Ipage<Order> 转成Ipage<OrderVo>
    return page1;
}


正在回答

4 回答

可以调用IPage接口中的一个默认方法实现,该默认方法MP已经给我们实现,如下:

/**
 * IPage 的泛型转换
 *
 * @param mapper 转换函数
 * @param <R>    转换后的泛型
 * @return 转换泛型后的 IPage
 */
@SuppressWarnings("unchecked")
default <R> IPage<R> convert(Function<? super T, ? extends R> mapper) {
    List<R> collect = this.getRecords().stream().map(mapper).collect(toList());
    return ((IPage<R>) this).setRecords(collect);
}


1 回复 有任何疑惑可以回复我~
#1

慕设计3472604

怎么用啊兄弟!!
2020-08-28 回复 有任何疑惑可以回复我~
#2

慕设计3472604

已解决
2020-08-28 回复 有任何疑惑可以回复我~
#3

老猿 回复 慕设计3472604

解决了就好嘿嘿。
2020-08-30 回复 有任何疑惑可以回复我~
#4

qq_慕先生2178238 回复 慕设计3472604

怎么解决的兄弟 怎么转换
2020-09-03 回复 有任何疑惑可以回复我~
#5

qq_慕先生2178238 回复 老猿

怎么用的,老哥
2020-09-03 回复 有任何疑惑可以回复我~
#6

老猿 回复 qq_慕先生2178238

就是用IPage的convert方法进行转换呀,参数是函数式接口Function啊,传入的参数类型为T返回类型为R。就可以了呀,T就是你原来要转换对象的类型,R是你转换之后的对象类型,也就是函数的返回值,直接convert参数中写lambda表达式即可。
2020-09-06 回复 有任何疑惑可以回复我~
#7

慕码人029206 回复 慕设计3472604

请问你怎么解决的,能贴一下代码么
2021-07-09 回复 有任何疑惑可以回复我~
查看4条回复

123

0 回复 有任何疑惑可以回复我~
List<User> list = iPage.getRecords();


0 回复 有任何疑惑可以回复我~

可以自定义一个转换函数,将转换完的结果返回

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

已经查到User列表,想返回userVo列表,这里Ipage是个接口,要怎么转换呢?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信