问题

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;
    }

解答

  1. 套餐表里面没有菜品的相关内容,套餐表和菜品的关联在另外一个表。所以我们要拿到套餐和菜品的关系,得到一个套餐对应的菜品的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);



在这里插入图片描述

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐