BeanCopyUtils.copyBeanList拷贝主要根据类型和字段名去进行一个匹配,如果都相同的话才能拷贝过去

项目场景:

提示:这里简述项目相关背景:

根据id获取name 获取不到
在这里插入图片描述在这里插入图片描述


问题描述

​​​​​​​​ 进行下面操作时categoryName获取不到,打断点之后发现实在拷贝时出现异常

//分页查询
         Page<Article> page = new Page<>(pageNum,pageSize);
        page(page,lambdaQueryWrapper);

        //查询categoryName
        List<Article> articles = page.getRecords();
        //categoryId去查询categoryName
        //1for循环方法
        for (Article article : articles) {//循环这个list集合
                                                         //获取到这个分类Id
            Category category = categoryService.getById(article.getCategoryId());
            article.setCategoryName(category.getName());
        }
        //封装查询结果
        List<ArticleListVo> articleListVos = BeanCopyUtils.copyBeanList(page.getRecords(), ArticleListVo.class);
        //拷贝主要根据类型和字段名去进行一个匹配,如果都相同的话就能拷贝过去
        PageVo pageVo = new PageVo(articleListVos,page.getTotal());
        return ResponseResult.okResult(pageVo);

原因分析:

拷贝时出现错误

拷贝主要根据类型和字段名去进行一个匹配,如果都相同的话就能拷贝过去,检查实体类和Vo之后发现Article实体里面的categoryName数据类型为String,ArticleVo里类型为Long,类型不匹配所以没有拷贝过来。
在这里插入图片描述


解决方案:

更改categoryName的数据类型,Article类和ArticleVo中保持一致就可以拷贝到了。


版权声明:本文为m0_52360766原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。