瑞吉外卖———stream流实现多表联查

/**
* 菜品信息的分页查询
* @param page
* @param pageSize
* @param name
* @return
*/
@GetMapping("/page")
public R<Page> page(int page,int pageSize,String name){
//构造分页构造器对象
        Page<Dish> pageInfo = new Page<>(page,pageSize);
        Page<DishDto> dishDtoPage = new Page<>();
//条件构造器
       LambdaQueryWrapper<Dish> queryWrapper = new LambdaQueryWrapper<>();
//添加过滤条件
      queryWrapper.like(name != null,Dish::getName,name);
//添加排序条件
     queryWrapper.orderByDesc(Dish::getUpdateTime);
//执行分页查寻
     dishService.page(pageInfo,queryWrapper);

//对象拷贝
BeanUtils.copyProperties(pageInfo,dishDtoPage,"records");

List<Dish> records = pageInfo.getRecords();
List<DishDto> list = records.stream().map((item)->{
DishDto dishDto = new DishDto();
BeanUtils.copyProperties(item,dishDto);
Long categoryId = item.getCategoryId();//分类id
//根据id查询分类对象
Category category = categoryService.getById(categoryId);
String categoryName = category.getName();
dishDto.setCategoryName(categoryName);
return dishDto;
}).collect(Collectors.toList());



dishDtoPage.setRecords(list);
return R.success(pageInfo);
}

在stream流中首先new一个DishDto流的实例,然后使用BeanUtils把基本属性从item复制到dishDto上,现在我们先从item中获取到DishDto的id属性,通过id查询获取到这个分类名称然后dishDto对象设置一下名称,最后在把这个dishDto对象返回到List<DishDao>中

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值