解答:【苍穹外卖】day04修改套餐_根据id查询套餐
·
问题
List setmealDishes = setmealDishMapper.getBySetmealid(id);
setmealDTO.setSetmealDishes(setmealDishes);
这是在设置什么 ,为什么要设置,直接复制属性得到DTO对象不行吗?
SetmealServiceImpl.java
/**
* 根据id查询套餐
* @param id
* @return
*/
@Override
public SetmealDTO getById(Long id) {
Setmeal setmeal = setmealMapper.getById(id);
List<SetmealDish> setmealDishes = setmealDishMapper.getBySetmealid(id);
SetmealDTO setmealDTO = new SetmealDTO();
BeanUtils.copyProperties(setmeal,setmealDTO);
setmealDTO.setSetmealDishes(setmealDishes);
return setmealDTO;
}
解答
- 套餐表里面没有菜品的相关内容,套餐表和菜品的关联在另外一个表。所以我们要拿到套餐和菜品的关系,得到一个套餐对应的菜品的id的list。也可以理解为我们要给前端传需要的数据,而在复制完成后,DYTO对象中仍缺少套餐和菜品的list,所以我们要找出来,给了DTO,以便前端回显套餐绑定的菜品list

// Step 1: 获取套餐基本信息
Setmeal setmeal = setmealMapper.getById(id);
// Step 2: 获取套餐关联的菜品列表(关键步骤)
List<SetmealDish> setmealDishes = setmealDishMapper.getBySetmealid(id);
// Step 3: 复制基本信息到DTO
SetmealDTO setmealDTO = new SetmealDTO();
BeanUtils.copyProperties(setmeal, setmealDTO);
// Step 4: 手动设置关联菜品列表(必须的补充步骤)
setmealDTO.setSetmealDishes(setmealDishes);

更多推荐



所有评论(0)