Loading... ### 对象拷贝并统一赋值(基于SpringBoot) 这是在瑞吉外卖里面学的,常用在对`dto`和`vo`的转化。 在这里我们把`Setmeal`的分页数据拷贝到`SetmealDto`分页数据,并设置`SetmealDat`中的`categoryName`。 ```java BeanUtils.copyProperties(Object1, Object2, "fivk") ``` 将`Object1`拷贝到`Object2`且不拷贝`fivk`。 #### 分页查询案例 ```java @GetMapping("/page") public R<Page> page(int page, int pageSize, String name) { // 1. 分页构造器 Page<Setmeal> pageInfo = new Page<>(page, pageSize); Page<SetmealDto> dtoPage = new Page<>(); // 2. 条件构造器 LambdaQueryWrapper<Setmeal> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.like(name != null, Setmeal::getName, name); queryWrapper.orderByDesc(Setmeal::getUpdateTime); // 3. 执行查询 setmealServer.page(pageInfo, queryWrapper); // 4. 对象拷贝 BeanUtils.copyProperties(pageInfo, dtoPage, "records"); List<Setmeal> records = pageInfo.getRecords(); // 集合内遍历每个元素进行修改 List<SetmealDto> list = records.stream().map((item) -> { SetmealDto setmealDto = new SetmealDto(); BeanUtils.copyProperties(item, setmealDto); // 获得分类id Long categoryId = item.getCategoryId(); // 根据分类id获取Category对象 Category category = categoryService.getById(categoryId); // 将分类名称赋值给SetmealDto if (category != null) { // 赋值 setmealDto.setCategoryName(category.getName()); } return setmealDto; }).collect(Collectors.toList()); // 将获取了菜品名字的records放到dtoPage dtoPage.setRecords(list); // 返回完整Page return R.success(dtoPage); } ``` 最后修改:2023 年 08 月 03 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏