美文网首页
Mybatis-plus之分页泛型转换

Mybatis-plus之分页泛型转换

作者: coder4j | 来源:发表于2020-10-11 22:40 被阅读0次

    对于vo和po严格规范的同学来说,在使用mybatis-plus进行分页时每次都需要复制分页信息或者重写分页api。其实mybatis-plus早已为我们解决这个问题了,细心的同学会发现在IPage中有一个convert方法,没错!就是这个方法。以后写分页就可以这样写了

    public IPage<UserVO> list(PageRequest request) {
      IPage<UserPO> page = new Page(request.getPageNum(), request.pageSize());
      LambdaQueryWrapper<UserPO> qw = Wrappers.lambdaQuery();
      page  = userMapper.selectPage(page, qw);
      return page.convert(u->{ 
        UserVO v = new UserVO();
        BeanUtils.copyProperties(u, v);
        return v;
      });
    }
    

    其源码如下:

        /**
         * 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);
        }
    

    可知,其做了一个泛型的强制转换,同时保留了分页信息。

    相关文章

      网友评论

          本文标题:Mybatis-plus之分页泛型转换

          本文链接:https://www.haomeiwen.com/subject/bhrjpktx.html